package com.androsz.electricsleepbeta.preference; import java.util.List; import android.graphics.drawable.ColorDrawable; import android.os.Build; import android.os.Bundle; import android.widget.ListView; import com.actionbarsherlock.app.SherlockPreferenceActivity; import com.actionbarsherlock.view.MenuItem; import com.androsz.electricsleepbeta.R; import com.androsz.electricsleepbeta.app.AnalyticActivity; import com.androsz.electricsleepbeta.util.GoogleAnalyticsSessionHelper; import com.androsz.electricsleepbeta.util.GoogleAnalyticsTrackerHelper; public abstract class HostPreferenceActivity extends SherlockPreferenceActivity implements GoogleAnalyticsTrackerHelper { protected abstract int getContentAreaLayoutId(); protected abstract int getHeadersResourceId(); protected static final int NO_HEADERS = 0; /** * Populate the activity with the top-level headers. */ @Override public void onBuildHeaders(List<Header> target) { if (getHeadersResourceId() != NO_HEADERS) { loadHeadersFromResource(getHeadersResourceId(), target); } } protected boolean getNeedToLoadOldStylePreferences() { return Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB || getHeadersResourceId() == NO_HEADERS; } @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); final ListView lvw = getListView(); this.getWindow().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.background_dark))); lvw.setBackgroundColor(getResources().getColor(R.color.background_dark)); //if pre-honeycomb, don't try to use fragments and just load the old-style prefs if (getNeedToLoadOldStylePreferences()) { addPreferencesFromResource(getContentAreaLayoutId()); //TODO is this needed anymore? it is inconsistent between API levels //if (getPreferencesName() != null) { // getPreferenceManager().setSharedPreferencesName(getPreferencesName()); //} } getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onOptionsItemSelected(final MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return (true); } return super.onOptionsItemSelected(item); } @Override protected void onStart() { super.onStart(); GoogleAnalyticsSessionHelper.getInstance(AnalyticActivity.KEY, getApplication()).onStartSession(); trackPageView(getClass().getSimpleName()); } @Override protected void onStop() { super.onStop(); GoogleAnalyticsSessionHelper.getExistingInstance().onStopSession(); } public void trackEvent(final String label, final int value) { GoogleAnalyticsSessionHelper.trackEvent(label, value); } public void trackPageView(final String pageUrl) { GoogleAnalyticsSessionHelper.trackPageView(pageUrl); } }