/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.activity.setting; import android.app.ActionBar; import android.content.ComponentName; import android.content.Intent; import android.media.Ringtone; import android.media.RingtoneManager; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.preference.CheckBoxPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import android.preference.PreferenceGroup; import android.preference.PreferenceManager; import android.text.TextUtils; import android.view.MenuItem; import android.widget.CompoundButton; import android.widget.Switch; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.analytics.OzViews; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.ui.activity.BaseActivity; /** * * @author sihai * */ public class BaseSettingsActivity extends PreferenceActivity { private static final OzViews VIEW; protected Handler mHandler; protected Switch mMasterSwitch; protected boolean mViewNavigationRecorded; static { VIEW = OzViews.GENERAL_SETTINGS; } public BaseSettingsActivity() { } public void finish() { EsAccount esaccount = getAccount(); if(esaccount != null) BaseActivity.recordReverseViewNavigation(this, esaccount, VIEW, null); super.finish(); } protected final EsAccount getAccount() { android.os.Parcelable parcelable = getIntent().getParcelableExtra("account"); EsAccount esaccount; if(parcelable == null) esaccount = null; else if(parcelable instanceof EsAccount) esaccount = (EsAccount)parcelable; else esaccount = null; return esaccount; } protected final Switch getMasterSwitch() { return mMasterSwitch; } protected final String getRingtoneName(String s, String s1, String s2) { if(s == null) s = PreferenceManager.getDefaultSharedPreferences(this).getString(s1, s2); String s3; if(s == null || s.length() == 0) { s3 = getString(R.string.realtimechat_settings_silent_ringtone); } else { Ringtone ringtone = RingtoneManager.getRingtone(this, Uri.parse(s)); if(ringtone == null) s3 = null; else s3 = ringtone.getTitle(this); } return s3; } protected final void hookMasterSwitch(PreferenceCategory preferencecategory, final CheckBoxPreference preference) { if(android.os.Build.VERSION.SDK_INT >= 14 && preference != null && (onIsHidingHeaders() || !onIsMultiPane())) { mMasterSwitch = new Switch(this); ActionBar actionbar = getActionBar(); int i = getResources().getDimensionPixelSize(R.dimen.action_bar_switch_padding); mMasterSwitch.setPadding(0, 0, i, 0); actionbar.setDisplayOptions(16, 16); actionbar.setCustomView(mMasterSwitch, new android.app.ActionBar.LayoutParams(-2, -2, 21)); mMasterSwitch.setOnCheckedChangeListener(new android.widget.CompoundButton.OnCheckedChangeListener() { public final void onCheckedChanged(CompoundButton compoundbutton, boolean flag) { android.preference.Preference.OnPreferenceChangeListener onpreferencechangelistener = preference.getOnPreferenceChangeListener(); if(onpreferencechangelistener == null || onpreferencechangelistener.onPreferenceChange(preference, Boolean.valueOf(flag))) preference.setChecked(flag); } }); mMasterSwitch.setChecked(preference.isChecked()); getPreferenceScreen().removePreference(preference); } } public void onCreate(Bundle bundle) { boolean flag = true; super.onCreate(bundle); mHandler = new Handler(getMainLooper()); if(android.os.Build.VERSION.SDK_INT >= 11) getActionBar().setDisplayHomeAsUpEnabled(flag); if(bundle == null) flag = false; mViewNavigationRecorded = flag; } public boolean onOptionsItemSelected(MenuItem menuitem) { int id = menuitem.getItemId(); if(16908332 == id) { finish(); return true; } return false; } public void onResume() { super.onResume(); EsAccount esaccount = getAccount(); if(!mViewNavigationRecorded && esaccount != null) { BaseActivity.recordViewNavigation(this, esaccount, VIEW); mViewNavigationRecorded = true; } } protected final void putAccountExtra(PreferenceGroup preferencegroup, EsAccount esaccount) { int i = 0; int j = preferencegroup.getPreferenceCount(); while(i < j) { Preference preference = preferencegroup.getPreference(i); Intent intent = preference.getIntent(); if(intent != null) { ComponentName componentname = intent.getComponent(); boolean flag; if(componentname != null && TextUtils.equals(getPackageName(), componentname.getPackageName())) flag = true; else flag = false; if(flag) intent.putExtra("account", esaccount); } if(preference instanceof PreferenceGroup) putAccountExtra((PreferenceGroup)preference, esaccount); i++; } } public final void startExternalActivity(Intent intent) { intent.addFlags(0x80000); startActivity(intent); } protected final class RingtonePreferenceChangeListener implements android.preference.Preference.OnPreferenceChangeListener { private String mDefaultPath; private String mKey; public RingtonePreferenceChangeListener(String s, String s1) { super(); mKey = s; mDefaultPath = s1; } public final boolean onPreferenceChange(Preference preference, Object obj) { String s = getRingtoneName((String)obj, mKey, mDefaultPath); if(s != null) preference.setSummary(s); return true; } } }