package com.android.settings.cyanogenmod; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; import com.android.settings.dashboard.SummaryLoader; import com.android.settingslib.drawer.Tile; import cyanogenmod.preference.RemotePreferenceManager; import static cyanogenmod.preference.RemotePreference.ACTION_UPDATE_PREFERENCE; import static cyanogenmod.preference.RemotePreference.EXTRA_KEY; import static cyanogenmod.preference.RemotePreference.EXTRA_SUMMARY; import static cyanogenmod.preference.RemotePreference.META_REMOTE_KEY; import static cyanogenmod.preference.RemotePreference.META_REMOTE_RECEIVER; public class RemoteSummaryProvider implements SummaryLoader.SummaryProvider, RemotePreferenceManager.OnRemoteUpdateListener { private final Activity mActivity; private final SummaryLoader mLoader; private final Tile mTile; private final String mKey; public static SummaryLoader.SummaryProvider createSummaryProvider( Activity activity, SummaryLoader summaryLoader, Tile tile) { if (tile.metaData != null && tile.metaData.containsKey(META_REMOTE_RECEIVER)) { return new RemoteSummaryProvider(activity, summaryLoader, tile); } return null; } private RemoteSummaryProvider(Activity activity, SummaryLoader loader, Tile tile) { mActivity = activity; mLoader = loader; mTile = tile; mKey = mTile.metaData.getString(META_REMOTE_KEY); } @Override public void setListening(boolean listening) { if (listening) { RemotePreferenceManager.get(mActivity).attach(mKey, this); } else { RemotePreferenceManager.get(mActivity).detach(mKey, this); } } @Override public Intent getReceiverIntent() { Intent i = new Intent(ACTION_UPDATE_PREFERENCE); i.setComponent(new ComponentName(mTile.intent.getComponent().getPackageName(), mTile.metaData.getString(META_REMOTE_RECEIVER))); i.putExtra(EXTRA_KEY, mKey); return i; } @Override public void onRemoteUpdated(Bundle bundle) { mLoader.setSummary(this, bundle.getString(EXTRA_SUMMARY)); } }