/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package my.home.lehome.fragment; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.EditTextPreference; import android.preference.Preference; import android.preference.PreferenceFragment; import android.widget.Toast; import my.home.domain.usecase.DeleteAutoCompleteHistoryUsecaseImpl; import my.home.lehome.R; import my.home.lehome.asynctask.LoadAutoCompleteConfAsyncTask; import my.home.lehome.helper.MessageHelper; import my.home.lehome.helper.NFCHelper; import my.home.lehome.helper.NetworkHelper; public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener { private String mDeviceId; private String mServerAddress; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); SharedPreferences sharedPreferences = getPreferenceManager().getSharedPreferences(); CheckBoxPreference checkBoxPreference = (CheckBoxPreference) findPreference("pref_auto_add_begin_and_end"); EditTextPreference beginEditTextPreference = (EditTextPreference) findPreference("pref_message_begin"); EditTextPreference endEditTextPreference = (EditTextPreference) findPreference("pref_message_end"); boolean is_auto = sharedPreferences.getBoolean("pref_auto_add_begin_and_end", false); if (is_auto) { checkBoxPreference.setChecked(true); beginEditTextPreference.setEnabled(true); endEditTextPreference.setEnabled(true); } else { checkBoxPreference.setChecked(false); beginEditTextPreference.setEnabled(false); endEditTextPreference.setEnabled(false); } boolean is_autocomplete = sharedPreferences.getBoolean("pref_cmd_autocomplete", true); ((CheckBoxPreference) findPreference("pref_cmd_autocomplete")).setChecked(is_autocomplete); boolean is_currect = sharedPreferences.getBoolean("pref_cmd_need_correct", true); ((CheckBoxPreference) findPreference("pref_cmd_need_correct")).setChecked(is_currect); beginEditTextPreference.setSummary(sharedPreferences.getString("pref_message_begin", "")); endEditTextPreference.setSummary(sharedPreferences.getString("pref_message_end", "")); EditTextPreference nameEditTextPreference = (EditTextPreference) findPreference("pref_client_id"); EditTextPreference subEditTextPreference = (EditTextPreference) findPreference("pref_server_address"); EditTextPreference pubEditTextPreference = (EditTextPreference) findPreference("pref_bind_device"); nameEditTextPreference.setSummary(sharedPreferences.getString("pref_client_id", "")); subEditTextPreference.setSummary(sharedPreferences.getString("pref_server_address", "")); pubEditTextPreference.setSummary(sharedPreferences.getString("pref_bind_device", "")); CheckBoxPreference confirmPreference = (CheckBoxPreference) findPreference("pref_speech_cmd_need_confirm"); boolean need_confirm = sharedPreferences.getBoolean("pref_speech_cmd_need_confirm", true); confirmPreference.setChecked(need_confirm); CheckBoxPreference btSCOPreference = (CheckBoxPreference) findPreference("pref_auto_connect_sco"); boolean auto_sco = sharedPreferences.getBoolean("pref_auto_connect_sco", true); btSCOPreference.setChecked(auto_sco); CheckBoxPreference savePowerPreference = (CheckBoxPreference) findPreference("pref_save_power_mode"); boolean savePowerOn = sharedPreferences.getBoolean("pref_save_power_mode", true); savePowerPreference.setChecked(savePowerOn); CheckBoxPreference wifiImgPreference = (CheckBoxPreference) findPreference("pref_load_img_wifi"); boolean wifiLoadOn = sharedPreferences.getBoolean("pref_load_img_wifi", false); wifiImgPreference.setChecked(wifiLoadOn); CheckBoxPreference locEnablePreference = (CheckBoxPreference) findPreference("pref_loc_me_enable"); boolean locEnable = sharedPreferences.getBoolean("pref_loc_me_enable", true); locEnablePreference.setChecked(locEnable); CheckBoxPreference silentLocCheckBoxPreference = (CheckBoxPreference) findPreference("pref_loc_me_silent_enable"); boolean silent_loc = sharedPreferences.getBoolean("pref_loc_me_silent_enable", false); silentLocCheckBoxPreference.setChecked(silent_loc); silentLocCheckBoxPreference.setEnabled(locEnable); CheckBoxPreference volumeKeyPreference = (CheckBoxPreference) findPreference("pref_volume_key_control_speech"); boolean volume_key_speech = sharedPreferences.getBoolean("pref_volume_key_control_speech", true); volumeKeyPreference.setChecked(volume_key_speech); mDeviceId = sharedPreferences.getString("pref_bind_device", ""); mServerAddress = sharedPreferences.getString("pref_server_address", ""); Preference button = findPreference("load_auto_item"); button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference arg0) { new LoadAutoCompleteConfAsyncTask(getActivity(), mServerAddress, mDeviceId).execute(); return true; } }); button = findPreference("local_ip_item"); button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference arg0) { String ipString = NetworkHelper.getIPAddress(true); Toast.makeText(getActivity(), getResources().getString(R.string.pref_local_ip_item) + ":" + ipString, Toast.LENGTH_SHORT).show(); return true; } }); button = findPreference("pref_delete_autocomplete_history"); button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { new DeleteAutoCompleteHistoryUsecaseImpl(getActivity()).execute(); Toast.makeText(getActivity(), getResources().getString(R.string.pref_delete_autocomplete_history_toast), Toast.LENGTH_SHORT).show(); return true; } }); //init local ssid preference EditTextPreference ssidEditTextPreference = (EditTextPreference) findPreference("pref_local_ssid"); ssidEditTextPreference.setSummary(sharedPreferences.getString("pref_local_ssid", "")); //init local server preference EditTextPreference addressEditTextPreference = (EditTextPreference) findPreference("pref_local_msg_server_address"); addressEditTextPreference.setSummary(sharedPreferences.getString("pref_local_msg_server_address", "")); //init state CheckBoxPreference lMsgCheckBoxPreference = (CheckBoxPreference) findPreference("pref_enable_local_msg"); boolean enable_local_msg = sharedPreferences.getBoolean("pref_enable_local_msg", false); if (enable_local_msg) { lMsgCheckBoxPreference.setChecked(true); ssidEditTextPreference.setEnabled(true); addressEditTextPreference.setEnabled(true); } else { lMsgCheckBoxPreference.setChecked(false); ssidEditTextPreference.setEnabled(false); addressEditTextPreference.setEnabled(false); } //nfc state CheckBoxPreference nfcCheckBoxPreference = (CheckBoxPreference) findPreference("pref_nfc_cmd_enable"); boolean enable_nfc_cmd = sharedPreferences.getBoolean("pref_nfc_cmd_enable", true); nfcCheckBoxPreference.setChecked(enable_nfc_cmd); Intent retIntent = new Intent(); retIntent.putExtra("old_device_id", pubEditTextPreference.getSummary()); retIntent.putExtra("old_local_msg_state", enable_local_msg); retIntent.putExtra("old_subscribe_address", MessageHelper.formatLocalServerSubscribeURL(getActivity(), addressEditTextPreference.getSummary().toString())); this.getActivity().setResult(Activity.RESULT_OK, retIntent); } @Override public void onResume() { super.onResume(); getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override public void onPause() { getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); super.onPause(); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals("pref_message_begin") || key.equals("pref_message_end")) { Preference exercisesPref = findPreference(key); exercisesPref.setSummary(sharedPreferences.getString(key, "")); } else if (key.equals("pref_server_address")) { Preference exercisesPref = findPreference(key); exercisesPref.setSummary(sharedPreferences.getString(key, "")); mServerAddress = sharedPreferences.getString("pref_server_address", ""); } else if (key.equals("pref_bind_device")) { Preference exercisesPref = findPreference(key); exercisesPref.setSummary(sharedPreferences.getString(key, "")); mDeviceId = sharedPreferences.getString("pref_bind_device", ""); } else if (key.equals("pref_client_id")) { Preference exercisesPref = findPreference(key); exercisesPref.setSummary(sharedPreferences.getString(key, "")); } else if (key.equals("pref_auto_add_begin_and_end")) { if (sharedPreferences.getBoolean("pref_auto_add_begin_and_end", false)) { findPreference("pref_message_begin").setEnabled(true); findPreference("pref_message_end").setEnabled(true); } else { findPreference("pref_message_begin").setEnabled(false); findPreference("pref_message_end").setEnabled(false); } } else if (key.equals("pref_enable_local_msg")) { if (sharedPreferences.getBoolean("pref_enable_local_msg", false)) { findPreference("pref_local_msg_server_address").setEnabled(true); findPreference("pref_local_ssid").setEnabled(true); // ComponentName receiver = new ComponentName(getActivity(), BootCompleteReceiver.class); // PackageManager pm = getActivity().getPackageManager(); // // pm.setComponentEnabledSetting(receiver, // PackageManager.COMPONENT_ENABLED_STATE_ENABLED, // PackageManager.DONT_KILL_APP); } else { findPreference("pref_local_msg_server_address").setEnabled(false); findPreference("pref_local_ssid").setEnabled(false); // ComponentName receiver = new ComponentName(getActivity(), BootCompleteReceiver.class); // PackageManager pm = getActivity().getPackageManager(); // // pm.setComponentEnabledSetting(receiver, // PackageManager.COMPONENT_ENABLED_STATE_DISABLED, // PackageManager.DONT_KILL_APP); } } else if (key.equals("pref_local_ssid")) { EditTextPreference ssidEditTextPreference = (EditTextPreference) findPreference("pref_local_ssid"); ssidEditTextPreference.setSummary(sharedPreferences.getString("pref_local_ssid", "")); } else if (key.equals("pref_local_msg_server_address")) { EditTextPreference addressEditTextPreference = (EditTextPreference) findPreference("pref_local_msg_server_address"); addressEditTextPreference.setSummary(sharedPreferences.getString("pref_local_msg_server_address", "")); } else if (key.equals("pref_save_power_mode")) { Toast.makeText(getActivity(), R.string.pref_save_power_mode_set, Toast.LENGTH_SHORT).show(); } else if (key.equals("pref_loc_me_enable")) { CheckBoxPreference silentLocCheckBoxPreference = (CheckBoxPreference) findPreference("pref_loc_me_silent_enable"); silentLocCheckBoxPreference.setEnabled(sharedPreferences.getBoolean("pref_loc_me_silent_enable", false)); } else if (key.equals("pref_nfc_cmd_enable")) { if (sharedPreferences.getBoolean(key, true)) { Context context = getActivity().getApplicationContext(); if (!NFCHelper.isNfcEnable(context)) { Toast.makeText(context, R.string.toast_nfc_feature_disable, Toast.LENGTH_SHORT).show(); final String nfcKey = key; final SharedPreferences finalNfcSharedPreferences = sharedPreferences; getActivity().runOnUiThread(new Runnable() { @Override public void run() { // set checkbox disable state CheckBoxPreference nfcPref = (CheckBoxPreference) findPreference(nfcKey); nfcPref.setChecked(false); // set pref to false SharedPreferences.Editor prefEditor = finalNfcSharedPreferences.edit(); prefEditor.putBoolean(nfcKey, false); prefEditor.apply(); } }); } } } else if (key.equals("pref_cmd_autocomplete")) { Toast.makeText(getActivity(), R.string.pref_cmd_autocomplete_set, Toast.LENGTH_SHORT).show(); } } }