/* * Copyright (C) 2007-2008 Esmertec AG. Copyright (C) 2007-2008 The Android Open * Source Project * * 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 org.awesomeapp.messenger.ui.legacy; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.Color; import android.media.RingtoneManager; import android.net.Uri; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; import org.awesomeapp.messenger.ImApp; import org.awesomeapp.messenger.Preferences; import org.awesomeapp.messenger.ui.PanicSetupActivity; import org.awesomeapp.messenger.util.Languages; import java.util.ArrayList; import im.zom.messenger.R; import info.guardianproject.panic.Panic; import info.guardianproject.panic.PanicResponder; public class SettingActivity extends PreferenceActivity { private static final String TAG = "SettingActivity"; private static final int CHOOSE_RINGTONE = 5; private PackageManager pm; private String currentLanguage; ListPreference mOtrMode; ListPreference mPanicTriggerApp; Preference mPanicConfig; ListPreference mLanguage; CheckBoxPreference mLinkifyOnTor; CheckBoxPreference mHideOfflineContacts; CheckBoxPreference mDeleteUnsecuredMedia; CheckBoxPreference mEnableNotification; CheckBoxPreference mNotificationVibrate; CheckBoxPreference mNotificationSound; CheckBoxPreference mForegroundService; CheckBoxPreference mAllowScreenshot; EditTextPreference mHeartbeatInterval; Preference mNotificationRingtone; private void setInitialValues() { mOtrMode.setValue(Preferences.getOtrMode()); mLinkifyOnTor.setChecked(Preferences.getLinkifyOnTor()); mHideOfflineContacts.setChecked(Preferences.getHideOfflineContacts()); mDeleteUnsecuredMedia.setChecked(Preferences.getDeleteInsecureMedia()); mEnableNotification.setChecked(Preferences.isNotificationEnabled()); mNotificationVibrate.setChecked(Preferences.getNotificationVibrate()); mNotificationSound.setChecked(Preferences.getNotificationSound()); mForegroundService.setChecked(Preferences.getUseForegroundPriority()); mHeartbeatInterval.setText(String.valueOf(Preferences.getHeartbeatInterval())); ArrayList<CharSequence> entries = new ArrayList<CharSequence>(); ArrayList<CharSequence> entryValues = new ArrayList<CharSequence>(); entries.add(0, getString(R.string.panic_app_none)); entries.add(1, getString(R.string.panic_app_default)); entryValues.add(0, Panic.PACKAGE_NAME_NONE); entryValues.add(1, Panic.PACKAGE_NAME_DEFAULT); for (ResolveInfo resolveInfo : PanicResponder.resolveTriggerApps(pm)) { if (resolveInfo.activityInfo == null) continue; entries.add(resolveInfo.activityInfo.loadLabel(pm)); entryValues.add(resolveInfo.activityInfo.packageName); } mPanicTriggerApp.setEntries(entries.toArray(new CharSequence[entries.size()])); mPanicTriggerApp.setEntryValues(entryValues.toArray(new CharSequence[entryValues.size()])); PanicResponder.configTriggerAppListPreference(mPanicTriggerApp, R.string.panic_trigger_app_summary, R.string.panic_app_none_summary); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); pm = getPackageManager(); mOtrMode = (ListPreference) findPreference("pref_security_otr_mode"); mOtrMode.setEntries(Preferences.getOtrModeNames()); mOtrMode.setEntryValues(Preferences.getOtrModeValues()); mOtrMode.setDefaultValue(Preferences.DEFAULT_OTR_MODE); mAllowScreenshot = (CheckBoxPreference)findPreference("prefBlockScreenshots"); mPanicTriggerApp = (ListPreference) findPreference("pref_panic_trigger_app"); mPanicConfig = (Preference) findPreference("pref_panic_config"); mLanguage = (ListPreference) findPreference("pref_language"); mLinkifyOnTor = (CheckBoxPreference) findPreference("pref_linkify_on_tor"); mHideOfflineContacts = (CheckBoxPreference) findPreference("pref_hide_offline_contacts"); mDeleteUnsecuredMedia = (CheckBoxPreference) findPreference("pref_delete_unsecured_media"); mEnableNotification = (CheckBoxPreference) findPreference("pref_enable_notification"); mNotificationVibrate = (CheckBoxPreference) findPreference("pref_notification_vibrate"); mNotificationSound = (CheckBoxPreference) findPreference("pref_notification_sound"); mNotificationRingtone = findPreference("pref_notification_ringtone"); Languages languages = Languages.get(this); currentLanguage = getResources().getConfiguration().locale.getLanguage(); mLanguage.setDefaultValue(currentLanguage); mLanguage.setEntries(languages.getAllNames()); mLanguage.setEntryValues(languages.getSupportedLocales()); mLanguage.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String language = (String) newValue; ImApp.resetLanguage(SettingActivity.this, language); setResult(RESULT_OK); return true; } }); mAllowScreenshot.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object o) { setResult(RESULT_OK); return true; } }); mPanicTriggerApp.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String packageName = (String) newValue; PanicResponder.setTriggerPackageName(SettingActivity.this, packageName); PanicResponder.configTriggerAppListPreference(mPanicTriggerApp, R.string.panic_trigger_app_summary, R.string.panic_app_none_summary); return true; } }); mPanicConfig.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Intent intent = new Intent(SettingActivity.this, PanicSetupActivity.class); startActivity(intent); return true; } }); findPreference("pref_color_reset").setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(SettingActivity.this); SharedPreferences.Editor pEdit = settings.edit(); pEdit.remove("themeColorBg"); pEdit.remove("themeColorText"); pEdit.remove("themeColor"); pEdit.commit(); setResult(RESULT_OK); finish(); return true; } }); mNotificationRingtone.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference arg0) { Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getString(R.string.notification_ringtone_title)); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Preferences.getNotificationRingtoneUri()); startActivityForResult(intent, CHOOSE_RINGTONE); return true; } }); mForegroundService = (CheckBoxPreference) findPreference("pref_foreground_enable"); mHeartbeatInterval = (EditTextPreference) findPreference("pref_heartbeat_interval"); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK && requestCode == CHOOSE_RINGTONE) { Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); Preferences.setNotificationRingtone(uri); } super.onActivityResult(requestCode, resultCode, data); } @Override protected void onResume() { super.onResume(); setInitialValues(); } }