/*
** Copyright 2010, The LimeIME Open Source Project
**
** Project Url: http://code.google.com/p/limeime/
** http://android.toload.net/
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
** This program 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 General Public License for more details.
** You should have received a copy of the GNU General Public License
** along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.toload.main.hd.limesettings;
import net.toload.main.hd.R;
import net.toload.main.hd.global.KeyboardObj;
import net.toload.main.hd.global.LIMEPreferenceManager;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.backup.BackupManager;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.os.RemoteException;
import android.preference.PreferenceFragment;
import android.util.Log;
@TargetApi(11)
public class LIMEPreferenceHC extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the main content.
getFragmentManager().beginTransaction().replace(android.R.id.content,
new PrefsFragment()).commit();
}
public static class PrefsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener{
private final boolean DEBUG = false;
private final String TAG = "LIMEPreferenceHC";
private Context ctx = null;
private DBServer DBSrv = null;
private LIMEPreferenceManager mLIMEPref = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preference);
if (ctx == null) {
ctx = getActivity().getApplicationContext();
}
mLIMEPref = new LIMEPreferenceManager(ctx);
DBSrv = new DBServer(ctx);
//-----------------------
// // Startup Search Service
// if (DBSrv == null) {
// try {
// ctx.bindService(new Intent(IDBService.class.getName()),
// serConn, Context.BIND_AUTO_CREATE);
// } catch (Exception e) {
// Log.i(TAG, "Failed to connect Search Service");
// }
// }
}
@Override
public void onResume() {
super.onResume();
// Set up a listener whenever a key changes
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
// Unregister the listener whenever a key changes
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if(DEBUG)
Log.i(TAG,"onSharedPreferenceChanged(), key:" + key);
if(key.equals("phonetic_keyboard_type")){
String selectedPhoneticKeyboardType = mLIMEPref.getPhoneticKeyboardType();
//PreferenceManager.getDefaultSharedPreferences(ctx).getString("phonetic_keyboard_type", "");
if(DEBUG)
Log.i("LIMEPreference:OnChanged()", "phonetickeyboardtype:" + selectedPhoneticKeyboardType);
try {
if(DEBUG)
Log.i("LIMEPreference:OnChanged()", "PhoneticIMInfo.kyeboard:" +
DBSrv.getImInfo("phonetic", "keyboard"));
KeyboardObj kobj = DBSrv.getKeyboardObj("phonetic");
if(selectedPhoneticKeyboardType.equals("standard")){
kobj = DBSrv.getKeyboardObj("phonetic");
}else if(selectedPhoneticKeyboardType.equals("eten")){
kobj = DBSrv.getKeyboardObj("phoneticet41");
}else if(selectedPhoneticKeyboardType.equals("eten26")){
if(mLIMEPref.getParameterBoolean("number_row_in_english", false)){
kobj = DBSrv.getKeyboardObj("limenum");
}else{
kobj = DBSrv.getKeyboardObj("lime");
}
}else if(selectedPhoneticKeyboardType.equals("eten26_symbol")){
kobj = DBSrv.getKeyboardObj("et26");
}else if(selectedPhoneticKeyboardType.equals("hsu")){ //Jeremy '12,7,6 Add HSU english keyboard support
if(mLIMEPref.getParameterBoolean("number_row_in_english", false)){
kobj = DBSrv.getKeyboardObj("limenum");
}else{
kobj = DBSrv.getKeyboardObj("lime");
}
}else if(selectedPhoneticKeyboardType.equals("hsu_symbol")){
kobj = DBSrv.getKeyboardObj("hsu");
}
DBSrv.setIMKeyboard("phonetic", kobj.getDescription(), kobj.getCode());
/*
DBSrv.setIMKeyboard("phonetic", kobj.getDescription(), kobj.getCode());
if(selectedPhoneticKeyboardType.equals("standard")){
DBSrv.setIMKeyboard("phonetic",
DBSrv.getKeyboardInfo("phonetic", "desc"), "phonetic");
}else if(selectedPhoneticKeyboardType.equals("eten")){
DBSrv.setIMKeyboard("phonetic",
DBSrv.getKeyboardInfo("phoneticet41", "desc"), "phoneticet41");
}else if(selectedPhoneticKeyboardType.equals("hsu")){
DBSrv.setIMKeyboard("phonetic",
DBSrv.getKeyboardInfo("hsu", "desc"), "hsu");//jeremy '12,6,6 new hsu and et26 keybaord
}else if(selectedPhoneticKeyboardType.equals("eten26")){
DBSrv.setIMKeyboard("phonetic",
DBSrv.getKeyboardInfo("et26", "desc"), "et26");
}*/
if(DEBUG) Log.i(TAG, "onSharedPreferenceChanged() PhoneticIMInfo.kyeboard:" +
DBSrv.getImInfo("phonetic", "keyboard"));
} catch (RemoteException e) {
Log.i(TAG, "onSharedPreferenceChanged(), WriteIMinfo for selected phonetic keyboard failed!!");
e.printStackTrace();
}
}
BackupManager backupManager = new BackupManager(ctx);
backupManager.dataChanged(); //Jeremy '12,4,29 call backup manager to backup the changes.
}
// private ServiceConnection serConn = new ServiceConnection() {
// public void onServiceConnected(ComponentName name, IBinder service) {
// if(DBSrv == null){
// DBSrv = IDBService.Stub.asInterface(service);
// }
// }
// public void onServiceDisconnected(ComponentName name) {}
//
// };
}
}