Android Open Source - calendar-widget Calendar Preferences Fragment






From Project

Back to project page calendar-widget.

License

The source code is released under:

Apache License

If you think the Android project calendar-widget listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.plusonelabs.calendar.prefs;
//from   ww  w  .  j  a v a 2 s . c  o m
import android.content.ContentResolver;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.graphics.LightingColorFilter;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.provider.CalendarContract.Calendars;

import com.plusonelabs.calendar.EventAppWidgetProvider;
import com.plusonelabs.calendar.R;

import java.util.HashSet;
import java.util.Set;

import static com.plusonelabs.calendar.prefs.CalendarPreferences.PREF_ACTIVE_CALENDARS;

public class CalendarPreferencesFragment extends PreferenceFragment {

  private static final String CALENDAR_ID = "calendarId";
  private static final String[] PROJECTION = new String[] { Calendars._ID,
      Calendars.CALENDAR_DISPLAY_NAME, Calendars.CALENDAR_COLOR,
      Calendars.ACCOUNT_NAME };
  private Set<String> initialActiveCalendars;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences_calendars);
    SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
    initialActiveCalendars = prefs.getStringSet(PREF_ACTIVE_CALENDARS,
        null);
    populatePreferenceScreen(initialActiveCalendars);
  }

    private void populatePreferenceScreen(Set<String> activeCalendars) {
        Cursor cursor = createLoadedCursor();
    if (cursor == null) {
      return;
    }
    for (int i = 0; i < cursor.getCount(); i++) {
      cursor.moveToPosition(i);
      CheckBoxPreference checkboxPref = new CheckBoxPreference(getActivity());
      checkboxPref.setTitle(cursor.getString(1));
      checkboxPref.setSummary(cursor.getString(3));
      checkboxPref.setIcon(createDrawable(cursor.getInt(2)));
      int calendarId = cursor.getInt(0);
      checkboxPref.getExtras().putInt(CALENDAR_ID, calendarId);
      checkboxPref.setChecked(activeCalendars == null
          || activeCalendars.contains(String.valueOf(calendarId)));
      getPreferenceScreen().addPreference(checkboxPref);
    }
  }

  @Override
  public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
    return true;
  }

  @Override
  public void onPause() {
    super.onPause();
    HashSet<String> selectedCalendars = getSelectedCalenders();
    if (!selectedCalendars.equals(initialActiveCalendars)) {
      persistSelectedCalendars(selectedCalendars);
      EventAppWidgetProvider.updateEventList(getActivity());
    }
  }

    private void persistSelectedCalendars(HashSet<String> prefValues) {
        SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
    Editor editor = prefs.edit();
        editor.putStringSet(PREF_ACTIVE_CALENDARS, prefValues);
    editor.commit();
  }

    private HashSet<String> getSelectedCalenders() {
        PreferenceScreen preferenceScreen = getPreferenceScreen();
    int prefCount = preferenceScreen.getPreferenceCount();
        HashSet<String> prefValues = new HashSet<>();
        for (int i = 0; i < prefCount; i++) {
      Preference pref = preferenceScreen.getPreference(i);
      if (pref instanceof CheckBoxPreference) {
        CheckBoxPreference checkPref = (CheckBoxPreference) pref;
        if (checkPref.isChecked()) {
          prefValues.add(String.valueOf(checkPref.getExtras().getInt(CALENDAR_ID)));
        }
      }
    }
    return prefValues;
  }

    private Drawable createDrawable(int color) {
        Drawable drawable = getResources().getDrawable(R.drawable.prefs_calendar_entry);
        drawable.setColorFilter(new LightingColorFilter(0x0, color));
        return drawable;
    }

    private Cursor createLoadedCursor() {
    Uri.Builder builder = Calendars.CONTENT_URI.buildUpon();
    ContentResolver contentResolver = getActivity().getContentResolver();
    return contentResolver.query(builder.build(), PROJECTION, null, null, null);
  }
}




Java Source Code List

com.plusonelabs.calendar.AlarmReceiver.java
com.plusonelabs.calendar.Alignment.java
com.plusonelabs.calendar.CalendarIntentUtil.java
com.plusonelabs.calendar.DateUtil.java
com.plusonelabs.calendar.EnvironmentChangedReceiver.java
com.plusonelabs.calendar.EventAppWidgetProvider.java
com.plusonelabs.calendar.EventRemoteViewsFactory.java
com.plusonelabs.calendar.EventWidgetService.java
com.plusonelabs.calendar.IEventVisualizer.java
com.plusonelabs.calendar.RemoteViewsUtil.java
com.plusonelabs.calendar.Theme.java
com.plusonelabs.calendar.WidgetConfigurationActivity.java
com.plusonelabs.calendar.calendar.CalendarEventProvider.java
com.plusonelabs.calendar.calendar.CalendarEventVisualizer.java
com.plusonelabs.calendar.calendar.CalendarEvent.java
com.plusonelabs.calendar.model.DayHeader.java
com.plusonelabs.calendar.model.Event.java
com.plusonelabs.calendar.prefs.AppearancePreferencesFragment.java
com.plusonelabs.calendar.prefs.BackgroundTransparencyDialog.java
com.plusonelabs.calendar.prefs.CalendarPreferencesFragment.java
com.plusonelabs.calendar.prefs.CalendarPreferences.java
com.plusonelabs.calendar.prefs.EventDetailsPreferencesFragment.java
com.plusonelabs.calendar.prefs.FeedbackPreferencesFragment.java