1e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung/* 2e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * Copyright (C) 2013 The Android Open Source Project 3e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * 4e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * Licensed under the Apache License, Version 2.0 (the "License"); 5e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * you may not use this file except in compliance with the License. 6e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * You may obtain a copy of the License at 7e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * 8e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * http://www.apache.org/licenses/LICENSE-2.0 9e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * 10e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * Unless required by applicable law or agreed to in writing, software 11e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * distributed under the License is distributed on an "AS IS" BASIS, 12e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * See the License for the specific language governing permissions and 14e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung * limitations under the License. 15e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung */ 16b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 17b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungpackage com.android.calendar; 18b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 19b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungimport android.app.Activity; 208de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kungimport android.app.Dialog; 21b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungimport android.content.ContentUris; 22b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungimport android.content.ContentValues; 23b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungimport android.content.Context; 24b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungimport android.database.Cursor; 25b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungimport android.net.Uri; 26b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungimport android.os.Bundle; 27b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungimport android.provider.CalendarContract.Calendars; 28b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungimport android.provider.CalendarContract.Colors; 29b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungimport android.util.SparseIntArray; 30b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 31a8b8c0d17adf3e8f9b34a5da89592aa7069c0bddJames Kungimport com.android.colorpicker.ColorPickerDialog; 32a8b8c0d17adf3e8f9b34a5da89592aa7069c0bddJames Kungimport com.android.colorpicker.ColorPickerSwatch.OnColorSelectedListener; 33a8b8c0d17adf3e8f9b34a5da89592aa7069c0bddJames Kungimport com.android.colorpicker.HsvColorComparator; 34b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 35b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungimport java.util.ArrayList; 36b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungimport java.util.Arrays; 37b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 38b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kungpublic class CalendarColorPickerDialog extends ColorPickerDialog { 39b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 40b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung private static final int NUM_COLUMNS = 4; 41b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 428de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung private static final String KEY_CALENDAR_ID = "calendar_id"; 438de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung private static final String KEY_COLOR_KEYS = "color_keys"; 448de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung 45b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung private static final int TOKEN_QUERY_CALENDARS = 1 << 1; 46b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung private static final int TOKEN_QUERY_COLORS = 1 << 2; 47b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 48b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung static final String[] CALENDARS_PROJECTION = new String[] { 49b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung Calendars.ACCOUNT_NAME, 50b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung Calendars.ACCOUNT_TYPE, 51b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung Calendars.CALENDAR_COLOR 52b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung }; 53b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 54e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung static final int CALENDARS_INDEX_ACCOUNT_NAME = 0; 55e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung static final int CALENDARS_INDEX_ACCOUNT_TYPE = 1; 56e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung static final int CALENDARS_INDEX_CALENDAR_COLOR = 2; 57b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 58b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung static final String[] COLORS_PROJECTION = new String[] { 59e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung Colors.COLOR, 60e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung Colors.COLOR_KEY 61b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung }; 62b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 63b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung static final String COLORS_WHERE = Colors.ACCOUNT_NAME + "=? AND " + Colors.ACCOUNT_TYPE + 64b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung "=? AND " + Colors.COLOR_TYPE + "=" + Colors.TYPE_CALENDAR; 65b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 66e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung public static final int COLORS_INDEX_COLOR = 0; 67e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung public static final int COLORS_INDEX_COLOR_KEY = 1; 68b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 69b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 70b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung private QueryService mService; 71b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung private SparseIntArray mColorKeyMap = new SparseIntArray(); 72b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung private long mCalendarId; 73b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 74b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung private class QueryService extends AsyncQueryService { 75b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 76b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung private QueryService(Context context) { 77b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung super(context); 78b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 79b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 80b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung @Override 81b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung protected void onQueryComplete(int token, Object cookie, Cursor cursor) { 82b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung // If the query didn't return a cursor for some reason return 83b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung if (cursor == null) { 84b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung return; 85b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 86b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 87b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung // If the Activity is finishing, then close the cursor. 88b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung // Otherwise, use the new cursor in the adapter. 89b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung final Activity activity = getActivity(); 90b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung if (activity == null || activity.isFinishing()) { 91b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung cursor.close(); 92b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung return; 93b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 94b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 95b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung switch (token) { 96b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung case TOKEN_QUERY_CALENDARS: 97b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung if (!cursor.moveToFirst()) { 98e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung cursor.close(); 99b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung dismiss(); 100e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung break; 101b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 102b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung mSelectedColor = Utils.getDisplayColorFromColor( 103b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung cursor.getInt(CALENDARS_INDEX_CALENDAR_COLOR)); 104b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung Uri uri = Colors.CONTENT_URI; 105b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung String[] args = new String[] { 106b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung cursor.getString(CALENDARS_INDEX_ACCOUNT_NAME), 107b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung cursor.getString(CALENDARS_INDEX_ACCOUNT_TYPE) }; 108b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung cursor.close(); 109b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung startQuery(TOKEN_QUERY_COLORS, null, uri, COLORS_PROJECTION, COLORS_WHERE, 110b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung args, null); 111b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung break; 112b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung case TOKEN_QUERY_COLORS: 113b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung if (!cursor.moveToFirst()) { 114e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung cursor.close(); 115b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung dismiss(); 116e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung break; 117b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 1188de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung mColorKeyMap.clear(); 119b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung ArrayList<Integer> colors = new ArrayList<Integer>(); 120b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung do 121b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung { 122b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung int colorKey = cursor.getInt(COLORS_INDEX_COLOR_KEY); 123b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung int rawColor = cursor.getInt(COLORS_INDEX_COLOR); 124b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung int displayColor = Utils.getDisplayColorFromColor(rawColor); 125b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung mColorKeyMap.put(displayColor, colorKey); 126b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung colors.add(displayColor); 127b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } while (cursor.moveToNext()); 128b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung Integer[] colorsToSort = colors.toArray(new Integer[colors.size()]); 129e134cd5c96507107048a50b55fe2fee85fe8e2e7James Kung Arrays.sort(colorsToSort, new HsvColorComparator()); 130b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung mColors = new int[colorsToSort.length]; 131b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung for (int i = 0; i < mColors.length; i++) { 132b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung mColors[i] = colorsToSort[i]; 133b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 1348de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung showPaletteView(); 135b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung cursor.close(); 136b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung break; 137b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 138b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 139b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 140b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 141b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung private class OnCalendarColorSelectedListener implements OnColorSelectedListener { 142b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 143b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung @Override 144b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung public void onColorSelected(int color) { 1458de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung if (color == mSelectedColor || mService == null) { 146b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung return; 147b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 148b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 149b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung ContentValues values = new ContentValues(); 150b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung values.put(Calendars.CALENDAR_COLOR_KEY, mColorKeyMap.get(color)); 1518de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung mService.startUpdate(mService.getNextToken(), null, ContentUris.withAppendedId( 1528de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung Calendars.CONTENT_URI, mCalendarId), values, null, null, Utils.UNDO_DELAY); 153b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 154b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 155b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 156b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung public CalendarColorPickerDialog() { 157b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung // Empty constructor required for dialog fragments. 158b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 159b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 1608de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung public static CalendarColorPickerDialog newInstance(long calendarId, boolean isTablet) { 1618de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung CalendarColorPickerDialog ret = new CalendarColorPickerDialog(); 1628de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung ret.setArguments(R.string.calendar_color_picker_dialog_title, NUM_COLUMNS, 163b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung isTablet ? SIZE_LARGE : SIZE_SMALL); 1648de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung ret.setCalendarId(calendarId); 1658de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung return ret; 1668de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 1678de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung 1688de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung @Override 1698de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung public void onSaveInstanceState(Bundle outState) { 1708de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung super.onSaveInstanceState(outState); 1718de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung outState.putLong(KEY_CALENDAR_ID, mCalendarId); 1728de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung saveColorKeys(outState); 1738de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 1748de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung 1758de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung private void saveColorKeys(Bundle outState) { 1765f86971de41a70d81355e0fad2443a9efb0f6fb8Paul Sliwowski // No color keys to save, so just return 1775f86971de41a70d81355e0fad2443a9efb0f6fb8Paul Sliwowski if (mColors == null) { 1785f86971de41a70d81355e0fad2443a9efb0f6fb8Paul Sliwowski return; 1795f86971de41a70d81355e0fad2443a9efb0f6fb8Paul Sliwowski } 1808de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung int[] colorKeys = new int[mColors.length]; 1818de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung for (int i = 0; i < mColors.length; i++) { 1828de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung colorKeys[i] = mColorKeyMap.get(mColors[i]); 1838de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 1848de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung outState.putIntArray(KEY_COLOR_KEYS, colorKeys); 1858de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 1868de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung 1878de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung @Override 1888de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung public void onCreate(Bundle savedInstanceState) { 1898de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung super.onCreate(savedInstanceState); 1908de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung if (savedInstanceState != null) { 1918de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung mCalendarId = savedInstanceState.getLong(KEY_CALENDAR_ID); 1928de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung retrieveColorKeys(savedInstanceState); 1938de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 1948de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung setOnColorSelectedListener(new OnCalendarColorSelectedListener()); 1958de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 1968de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung 1978de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung private void retrieveColorKeys(Bundle savedInstanceState) { 1988de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung int[] colorKeys = savedInstanceState.getIntArray(KEY_COLOR_KEYS); 1998de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung if (mColors != null && colorKeys != null) { 2008de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung for (int i = 0; i < mColors.length; i++) { 2018de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung mColorKeyMap.put(mColors[i], colorKeys[i]); 2028de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 2038de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 2048de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 2058de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung 2068de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung @Override 2078de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung public void setColors(int[] colors) { 2088de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung throw new IllegalStateException("Must call setCalendarId() to update calendar colors"); 2098de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 2108de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung 2118de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung @Override 2128de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung public void setColors(int[] colors, int selectedColor) { 2138de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung throw new IllegalStateException("Must call setCalendarId() to update calendar colors"); 214b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 215b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 216b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung public void setCalendarId(long calendarId) { 2178de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung if (calendarId != mCalendarId) { 2188de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung mCalendarId = calendarId; 2198de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung startQuery(); 220b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 221b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 222b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung 223b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung @Override 2248de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung public Dialog onCreateDialog(Bundle savedInstanceState) { 2258de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung Dialog dialog = super.onCreateDialog(savedInstanceState); 2268de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung mService = new QueryService(getActivity()); 2278de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung if (mColors == null) { 2288de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung startQuery(); 2298de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 2308de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung return dialog; 2318de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 2328de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung 2338de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung private void startQuery() { 2348de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung if (mService != null) { 2358de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung showProgressBarView(); 2368de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung mService.startQuery(TOKEN_QUERY_CALENDARS, null, 2378de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung ContentUris.withAppendedId(Calendars.CONTENT_URI, mCalendarId), 2388de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung CALENDARS_PROJECTION, null, null, null); 2398de796dfd3a1dad6cb386077e785d09fc02bec7bJames Kung } 240b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung } 241b546c601b8f0b476e8bc7db649ee0a6ee60ce14cJames Kung} 242