Android Open Source - p1keyboard Preferences






From Project

Back to project page p1keyboard.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project p1keyboard listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/* Copyright (C) 2011, Kenneth Skovhede
 * http://www.hexad.dk, opensource@hexad.dk
 * //from ww  w. j a  v  a  2s  .  c  o m
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*/
package mobi.omegacentauri.p1keyboard;

import java.util.ArrayList;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.PowerManager;
import android.preference.PreferenceManager;

public class Preferences {
  
  public static final String[] PROFILE_NAMES = new String[] {"<default>", "Profile 2", "Profile 3", "Profile 4", "Profile 5", "Profile 6", "Profile 7", "Profile 8", "Profile 9", "Profile 10" };
  public static final String[] PROFILE_KEYS = new String[] {"", "Profile2", "Profile3", "Profile4", "Profile5", "Profile6", "Profile7", "Profile8", "Profile9", "Profile10" };
  
  public static final String PREFERENCES_UPDATED = "mobi.omegacentauri.p1keyboard.preferenceschanged";

  public static final int NO_WAKE_LOCK = 0;
  
  public static final int MAX_NO_OF_CONTROLLERS = 4;
  
  private static final String PREF_DONATION_AMOUNT = "donation amount";
  private static final String PREF_DEVICE_NAME = "device name";
  private static final String PREF_DEVICE_ADDRESS = "device address";
  private static final String PREF_DRIVER_NAME = "driver name";
  private static final String PREF_KEY_MAPPING = "key mapping";
  private static final String PREF_META_KEY_MAPPING = "meta key mapping";
  private static final String PREF_KEY_MAPPING_PROFILE = "key mapping profile";
  private static final String PREF_PROFILE_NAME = "profile name";
  private static final String PREF_CONTROLLER_COUNT = "controller count";
  private static final String PREF_MANAGE_BLUETOOTH = "manage bluetooth";
  private static final String PREF_WAKE_LOCK = "wake lock";
  
  private SharedPreferences m_prefs;
  private Context m_context;
  
  public Preferences(Context context) {
    m_prefs = PreferenceManager.getDefaultSharedPreferences(context);
    m_context = context;
  }
  
  private static String getSuffix(int pos) {
    return pos < 1 ? "" : (" #" + pos);
      
  }
  
  public String getSelectedDriverName(int pos) {
    return m_prefs.getString(PREF_DRIVER_NAME + getSuffix(pos), BluezService.getDefaultDriverName());
  }
  
  public void setSelectedDriverName(String value, int pos) {
    Editor e = m_prefs.edit();
    e.putString(PREF_DRIVER_NAME + getSuffix(pos), value);
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }

  public String getSelectedDeviceName(int pos) {
    return m_prefs.getString(PREF_DEVICE_NAME + getSuffix(pos), null);
  }
  
  public void setSelectedDeviceName(String value, int pos) {
    Editor e = m_prefs.edit();
    e.putString(PREF_DEVICE_NAME + getSuffix(pos), value);
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }

  public String getSelectedDeviceAddress(int pos) {
    return m_prefs.getString(PREF_DEVICE_ADDRESS + getSuffix(pos), null);
  }
  
  public void setSelectedDeviceAddress(String value, int pos) {
    Editor e = m_prefs.edit();
    e.putString(PREF_DEVICE_ADDRESS + getSuffix(pos), value);
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }

  public void setSelectedDevice(String name, String address, int pos) {
    Editor e = m_prefs.edit();
    e.putString(getCurrentProfile() + PREF_DEVICE_NAME + getSuffix(pos), name);
    e.putString(getCurrentProfile() + PREF_DEVICE_ADDRESS + getSuffix(pos), address);
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }
  
  public int getKeyMapping(int key, int controllerNo) {
    String mapping = getCurrentProfile() + PREF_KEY_MAPPING + getSelectedDriverName(controllerNo) + (controllerNo == 0 ? "" : "#" + controllerNo) + "-" + Integer.toHexString(key);
    
    //Special default mapping for PhoneJoy pr. request
    if (getSelectedDriverName(controllerNo).equals(PhonejoyReader.DRIVER_NAME)) {
      switch(key) {
        case FutureKeyCodes.KEYCODE_BUTTON_A: key = FutureKeyCodes.KEYCODE_BUTTON_Y; break;
        case FutureKeyCodes.KEYCODE_BUTTON_B: key = FutureKeyCodes.KEYCODE_BUTTON_Z; break;
        case FutureKeyCodes.KEYCODE_BUTTON_C: key = FutureKeyCodes.KEYCODE_BUTTON_X; break;
        case FutureKeyCodes.KEYCODE_BUTTON_X: key = FutureKeyCodes.KEYCODE_DPAD_CENTER; break;
        
        case FutureKeyCodes.KEYCODE_BUTTON_L2: key = FutureKeyCodes.KEYCODE_BACK; break;
        case FutureKeyCodes.KEYCODE_BUTTON_R2: key = FutureKeyCodes.KEYCODE_MENU; break;

        case FutureKeyCodes.KEYCODE_T: key = FutureKeyCodes.KEYCODE_DPAD_UP; break;
        case FutureKeyCodes.KEYCODE_G: key = FutureKeyCodes.KEYCODE_DPAD_DOWN; break;
        case FutureKeyCodes.KEYCODE_F: key = FutureKeyCodes.KEYCODE_DPAD_LEFT; break;
        case FutureKeyCodes.KEYCODE_H: key = FutureKeyCodes.KEYCODE_DPAD_RIGHT; break;

        case FutureKeyCodes.KEYCODE_I: key = FutureKeyCodes.KEYCODE_W; break;
        case FutureKeyCodes.KEYCODE_K: key = FutureKeyCodes.KEYCODE_S; break;
        case FutureKeyCodes.KEYCODE_J: key = FutureKeyCodes.KEYCODE_A; break;
        case FutureKeyCodes.KEYCODE_L: key = FutureKeyCodes.KEYCODE_D; break;
      }
    }
    
    return m_prefs.getInt(mapping, key);
  }
  
  public void setKeyMapping(int fromKey, int toKey, int controllerNo) {
    String mapping = getCurrentProfile() + PREF_KEY_MAPPING + getSelectedDriverName(controllerNo) + (controllerNo == 0 ? "" : "#" + controllerNo) + "-" + Integer.toHexString(fromKey); 
    Editor e = m_prefs.edit();
    e.putInt(mapping, toKey);
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }

  public int getMetaKeyMapping(int sourceKey, int controllerNo) {
    String mapping = getCurrentProfile() + PREF_META_KEY_MAPPING + getSelectedDriverName(controllerNo) + (controllerNo == 0 ? "" : "#" + controllerNo) + "-" + Integer.toHexString(sourceKey); 
    return m_prefs.getInt(mapping, 0);
  }
  
  public void setMetaKeyMapping(int sourceKey, int metaKey, int controllerNo) {
    String mapping = getCurrentProfile() + PREF_META_KEY_MAPPING + getSelectedDriverName(controllerNo) + (controllerNo == 0 ? "" : "#" + controllerNo) + "-" + Integer.toHexString(sourceKey); 
    Editor e = m_prefs.edit();
    e.putInt(mapping, metaKey);
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }

  public void setCurrentProfile(String value) {
    Editor e = m_prefs.edit();
    e.putString(PREF_KEY_MAPPING_PROFILE, value);
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }
  
  public String getCurrentProfile() {
    String prof = m_prefs.getString(PREF_KEY_MAPPING_PROFILE, "");
    if (prof != null && prof.length() > 0)
      return prof + ":";
    else
      return "";
  }
  
  public void deleteProfile(String profilename) {
    if (profilename == null || profilename.length() == 0)
      return;
    
    clearByPrefix(profilename + ":");
  }

  public void clearKeyMappings(int controllerNo) {
    clearByPrefix(getCurrentProfile() + PREF_KEY_MAPPING + getSelectedDriverName(controllerNo) + (controllerNo == 0 ? "" : "#" + controllerNo) + "-");
    clearByPrefix(getCurrentProfile() + PREF_META_KEY_MAPPING + getSelectedDriverName(controllerNo) + (controllerNo == 0 ? "" : "#" + controllerNo) + "-");
  }
  
  private void clearByPrefix(String prefix) {
    ArrayList<String> toRemove = new ArrayList<String>();
    for(String s : m_prefs.getAll().keySet())
      if (s.startsWith(prefix))
        toRemove.add(s);
    
    Editor e = m_prefs.edit();
    
    for(String s : toRemove)
      e.remove(s);
    
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }
  
  public int getDonatedAmount() {
    return m_prefs.getInt(PREF_DONATION_AMOUNT, 0);
  }

  public void setDonatedAmount(int amount) {
    Editor e = m_prefs.edit();
    e.putInt(PREF_DONATION_AMOUNT, amount);
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }

  public String getProfileDisplayName(String profilename) {
    String profKey = profilename;
    if (profKey.endsWith(":"))
      profKey = profKey.substring(0, profKey.length() - 1);
    
    String defaultName = profKey;
    for(int i = 0; i < PROFILE_KEYS.length; i++)
      if (PROFILE_KEYS[i].equals(profKey)) {
        defaultName = PROFILE_NAMES[i];
        break;
      }
    
    String res = m_prefs.getString(profKey + ":" + PREF_PROFILE_NAME, defaultName);
    if (res == null || res.equals(""))
      res = defaultName;
    
    return res;
  }

  public String getProfileDisplayName() {
    return getProfileDisplayName(getCurrentProfile());
  }
  
  public void setProfileDisplayName(String value) {
    Editor e = m_prefs.edit();
    e.putString(getCurrentProfile() + PREF_PROFILE_NAME, value);
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }

  public boolean getManageBluetooth() {
    return m_prefs.getBoolean(PREF_MANAGE_BLUETOOTH, true);
  }
  
  public int getControllerCount() {
    return m_prefs.getInt(PREF_CONTROLLER_COUNT, 1);
  }

  public void setControllerCount(int count) {
    Editor e = m_prefs.edit();
    e.putInt(PREF_CONTROLLER_COUNT, count);
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }

  public void setManageBluetooth(boolean value) {
    Editor e = m_prefs.edit();
    e.putBoolean(PREF_MANAGE_BLUETOOTH, value);
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }

  
  public void setWakeLock(int value) {
    switch(value)
    {
      case PowerManager.FULL_WAKE_LOCK:
      case PowerManager.PARTIAL_WAKE_LOCK:
      case PowerManager.SCREEN_BRIGHT_WAKE_LOCK:
      case PowerManager.SCREEN_DIM_WAKE_LOCK:
      case NO_WAKE_LOCK:
        break;
      default:
        return;
    }
    
    Editor e = m_prefs.edit();
    e.putInt(PREF_WAKE_LOCK, value);
    e.commit();
    m_context.sendBroadcast(new Intent(PREFERENCES_UPDATED));
  }
  
  public int getWakeLock() {
    return m_prefs.getInt(PREF_WAKE_LOCK, NO_WAKE_LOCK);
  }

}




Java Source Code List

mobi.omegacentauri.p1keyboard.BGP100Reader.java
mobi.omegacentauri.p1keyboard.BluezDriverInterface.java
mobi.omegacentauri.p1keyboard.BluezForegroundService.java
mobi.omegacentauri.p1keyboard.BluezIMESettings.java
mobi.omegacentauri.p1keyboard.BluezIME.java
mobi.omegacentauri.p1keyboard.BluezService.java
mobi.omegacentauri.p1keyboard.ButtonConfiguration.java
mobi.omegacentauri.p1keyboard.DataDumpReader.java
mobi.omegacentauri.p1keyboard.DeviceScanActivity.java
mobi.omegacentauri.p1keyboard.FutureKeyCodes.java
mobi.omegacentauri.p1keyboard.GameStopReader.java
mobi.omegacentauri.p1keyboard.HIDKeyboard.java
mobi.omegacentauri.p1keyboard.HIDReaderBase.java
mobi.omegacentauri.p1keyboard.HIDipega.java
mobi.omegacentauri.p1keyboard.ImprovedBluetoothDevice.java
mobi.omegacentauri.p1keyboard.PalmOneWirelessKeyboardReader.java
mobi.omegacentauri.p1keyboard.PhonejoyReader.java
mobi.omegacentauri.p1keyboard.Preferences.java
mobi.omegacentauri.p1keyboard.RfcommReader.java
mobi.omegacentauri.p1keyboard.WiimoteReader.java
mobi.omegacentauri.p1keyboard.ZeemoteReader.java
mobi.omegacentauri.p1keyboard.iCadeReader.java
mobi.omegacentauri.p1keyboard.iControlPadReader.java