diff --git a/app/src/googleplay/java/org/tasks/activities/GoogleTaskListSettingsActivity.java b/app/src/googleplay/java/org/tasks/activities/GoogleTaskListSettingsActivity.java index 65c6a342f..064a87751 100644 --- a/app/src/googleplay/java/org/tasks/activities/GoogleTaskListSettingsActivity.java +++ b/app/src/googleplay/java/org/tasks/activities/GoogleTaskListSettingsActivity.java @@ -146,6 +146,7 @@ public class GoogleTaskListSettingsActivity extends ThemedInjectingAppCompatActi protected void showThemePicker() { Intent intent = new Intent(GoogleTaskListSettingsActivity.this, ColorPickerActivity.class); intent.putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerDialog.ColorPalette.COLORS); + intent.putExtra(ColorPickerActivity.EXTRA_THEME_INDEX, selectedTheme); intent.putExtra(ColorPickerActivity.EXTRA_SHOW_NONE, true); startActivityForResult(intent, REQUEST_COLOR_PICKER); } diff --git a/app/src/googleplay/java/org/tasks/activities/SupportGoogleTaskListPicker.java b/app/src/googleplay/java/org/tasks/activities/SupportGoogleTaskListPicker.java index 5857a0f12..77d8a3a63 100644 --- a/app/src/googleplay/java/org/tasks/activities/SupportGoogleTaskListPicker.java +++ b/app/src/googleplay/java/org/tasks/activities/SupportGoogleTaskListPicker.java @@ -84,8 +84,9 @@ public class SupportGoogleTaskListPicker extends InjectingDialogFragment { protected int getDrawableColor(int position) { GtasksList list = lists.get(position); int color = list.getColor(); - ThemeColor themeColor = themeCache.getThemeColor(color >= 0 ? color : 19); - return themeColor.getPrimaryColor(); + return color >= 0 + ? themeCache.getThemeColor(color).getPrimaryColor() + : super.getDrawableColor(position); } }; adapter.setChecked(selected.getName()); diff --git a/app/src/main/java/com/todoroo/astrid/core/DefaultsPreferences.java b/app/src/main/java/com/todoroo/astrid/core/DefaultsPreferences.java index 05f271340..f4296e83c 100644 --- a/app/src/main/java/com/todoroo/astrid/core/DefaultsPreferences.java +++ b/app/src/main/java/com/todoroo/astrid/core/DefaultsPreferences.java @@ -48,13 +48,12 @@ public class DefaultsPreferences extends InjectingPreferenceActivity { }); String defaultCalendarName = getDefaultCalendarName(); defaultCalendarPref.setSummary(defaultCalendarName == null - ? getString(R.string.none) + ? getString(R.string.dont_add_to_calendar) : defaultCalendarName); } private void startCalendarSelectionActivity() { Intent intent = new Intent(DefaultsPreferences.this, CalendarSelectionActivity.class); - intent.putExtra(CalendarSelectionActivity.EXTRA_SHOW_NONE, true); intent.putExtra(CalendarSelectionActivity.EXTRA_CALENDAR_NAME, getDefaultCalendarName()); startActivityForResult(intent, REQUEST_CALENDAR_SELECTION); } diff --git a/app/src/main/java/org/tasks/activities/CalendarSelectionActivity.java b/app/src/main/java/org/tasks/activities/CalendarSelectionActivity.java index 03da5bfdb..e51eff85f 100644 --- a/app/src/main/java/org/tasks/activities/CalendarSelectionActivity.java +++ b/app/src/main/java/org/tasks/activities/CalendarSelectionActivity.java @@ -16,7 +16,6 @@ public class CalendarSelectionActivity extends InjectingAppCompatActivity implem public static final String EXTRA_CALENDAR_ID = "extra_calendar_id"; public static final String EXTRA_CALENDAR_NAME = "extra_calendar_name"; - public static final String EXTRA_SHOW_NONE = "extra_show_none"; @Override protected void onCreate(Bundle savedInstanceState) { @@ -25,9 +24,7 @@ public class CalendarSelectionActivity extends InjectingAppCompatActivity implem CalendarSelectionDialog fragmentByTag = (CalendarSelectionDialog) fragmentManager.findFragmentByTag(FRAG_TAG_CALENDAR_PREFERENCE_SELECTION); if (fragmentByTag == null) { Intent intent = getIntent(); - fragmentByTag = newCalendarSelectionDialog( - intent.getBooleanExtra(EXTRA_SHOW_NONE, false), - intent.getStringExtra(EXTRA_CALENDAR_NAME)); + fragmentByTag = newCalendarSelectionDialog(intent.getStringExtra(EXTRA_CALENDAR_NAME)); fragmentByTag.show(fragmentManager, FRAG_TAG_CALENDAR_PREFERENCE_SELECTION); } fragmentByTag.setCalendarSelectionHandler(this); diff --git a/app/src/main/java/org/tasks/activities/CalendarSelectionDialog.java b/app/src/main/java/org/tasks/activities/CalendarSelectionDialog.java index 27788bd5b..b0360e8c3 100644 --- a/app/src/main/java/org/tasks/activities/CalendarSelectionDialog.java +++ b/app/src/main/java/org/tasks/activities/CalendarSelectionDialog.java @@ -6,10 +6,11 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.widget.Toast; +import com.google.common.base.Strings; + import org.tasks.R; import org.tasks.calendars.AndroidCalendar; import org.tasks.calendars.CalendarProvider; -import org.tasks.dialogs.AlertDialogBuilder; import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.DialogFragmentComponent; import org.tasks.injection.InjectingDialogFragment; @@ -29,10 +30,9 @@ import static org.tasks.PermissionUtil.verifyPermissions; public class CalendarSelectionDialog extends InjectingDialogFragment { - public static CalendarSelectionDialog newCalendarSelectionDialog(boolean enableNone, String selected) { + public static CalendarSelectionDialog newCalendarSelectionDialog(String selected) { CalendarSelectionDialog dialog = new CalendarSelectionDialog(); Bundle arguments = new Bundle(); - arguments.putBoolean(EXTRA_NONE_ENABLED, enableNone); arguments.putString(EXTRA_SELECTED, selected); dialog.setArguments(arguments); return dialog; @@ -45,7 +45,6 @@ public class CalendarSelectionDialog extends InjectingDialogFragment { } private static final String EXTRA_SELECTED = "extra_selected"; - private static final String EXTRA_NONE_ENABLED = "extra_none_enabled"; @Inject DialogBuilder dialogBuilder; @Inject CalendarProvider calendarProvider; @@ -57,7 +56,6 @@ public class CalendarSelectionDialog extends InjectingDialogFragment { private String selected; private SingleCheckedArrayAdapter adapter; private final List calendars = new ArrayList<>(); - private final List calendarNames = new ArrayList<>(); @NonNull @Override @@ -68,16 +66,22 @@ public class CalendarSelectionDialog extends InjectingDialogFragment { selected = arguments.getString(EXTRA_SELECTED); theme.applyToContext(getActivity()); - adapter = new SingleCheckedArrayAdapter(getActivity(), calendarNames, theme.getThemeAccent()); + adapter = new SingleCheckedArrayAdapter(getActivity(), transform(calendars, AndroidCalendar::getName), theme.getThemeAccent()) { + @Override + protected int getDrawable(int position) { + return R.drawable.ic_event_24dp; + } - AlertDialogBuilder builder = dialogBuilder.newDialog() - .setSingleChoiceItems(adapter, -1, (dialog, which) -> handler.selectedCalendar(calendars.get(which))) - .setNegativeButton(android.R.string.cancel, (dialogInterface, i) -> handler.cancel()); - if (arguments.getBoolean(EXTRA_NONE_ENABLED)) { - builder.setNeutralButton(R.string.none, (dialog, which) -> handler.selectedCalendar(new AndroidCalendar("-1", getString(R.string.none)))); - } + @Override + protected int getDrawableColor(int position) { + return calendars.get(position).getColor(); + } + }; - return builder.show(); + return dialogBuilder.newDialog() + .setSingleChoiceItems(adapter, -1, (dialog, which) -> handler.selectedCalendar(calendars.get(which))) + .setOnDismissListener(dialogInterface -> handler.cancel()) + .show(); } @Override @@ -87,13 +91,16 @@ public class CalendarSelectionDialog extends InjectingDialogFragment { if (permissionChecker.canAccessCalendars()) { calendars.clear(); calendars.addAll(calendarProvider.getCalendars()); - calendarNames.clear(); - calendarNames.addAll(transform(calendars, AndroidCalendar::getName)); - if (calendarNames.isEmpty()) { + if (calendars.isEmpty()) { Toast.makeText(getActivity(), R.string.no_calendars_found, Toast.LENGTH_LONG).show(); handler.cancel(); } else { - adapter.setChecked(selected); + calendars.add(0, new AndroidCalendar(null, getString(R.string.dont_add_to_calendar), -1)); + if (Strings.isNullOrEmpty(selected)) { + adapter.setChecked(0); + } else { + adapter.setChecked(selected); + } adapter.notifyDataSetChanged(); } } diff --git a/app/src/main/java/org/tasks/activities/ColorPickerActivity.java b/app/src/main/java/org/tasks/activities/ColorPickerActivity.java index 2e2ae768e..3c531116a 100644 --- a/app/src/main/java/org/tasks/activities/ColorPickerActivity.java +++ b/app/src/main/java/org/tasks/activities/ColorPickerActivity.java @@ -10,6 +10,7 @@ import org.tasks.dialogs.ColorPickerDialog; import org.tasks.dialogs.ColorPickerDialog.ColorPalette; import org.tasks.injection.ActivityComponent; import org.tasks.injection.ThemedInjectingAppCompatActivity; +import org.tasks.themes.Theme; import javax.inject.Inject; @@ -25,6 +26,7 @@ public class ColorPickerActivity extends ThemedInjectingAppCompatActivity implem public static final String EXTRA_THEME_INDEX = "extra_index"; @Inject PurchaseHelper purchaseHelper; + @Inject Theme theme; @Override protected void onCreate(Bundle savedInstanceState) { @@ -35,9 +37,13 @@ public class ColorPickerActivity extends ThemedInjectingAppCompatActivity implem protected void onPostResume() { super.onPostResume(); - ColorPalette palette = (ColorPalette) getIntent().getSerializableExtra(EXTRA_PALETTE); - boolean showNone = getIntent().getBooleanExtra(EXTRA_SHOW_NONE, false); - newColorPickerDialog(palette, showNone) + Intent intent = getIntent(); + ColorPalette palette = (ColorPalette) intent.getSerializableExtra(EXTRA_PALETTE); + boolean showNone = intent.getBooleanExtra(EXTRA_SHOW_NONE, false); + int selected = intent.hasExtra(EXTRA_THEME_INDEX) + ? intent.getIntExtra(EXTRA_THEME_INDEX, -1) + : getCurrentSelection(palette); + newColorPickerDialog(palette, showNone, selected) .show(getSupportFragmentManager(), FRAG_TAG_COLOR_PICKER); } @@ -80,4 +86,15 @@ public class ColorPickerActivity extends ThemedInjectingAppCompatActivity implem finish(); } } + + private int getCurrentSelection(ColorPalette palette) { + switch (palette) { + case COLORS: + return theme.getThemeColor().getIndex(); + case ACCENTS: + return theme.getThemeAccent().getIndex(); + default: + return theme.getThemeBase().getIndex(); + } + } } diff --git a/app/src/main/java/org/tasks/activities/TagSettingsActivity.java b/app/src/main/java/org/tasks/activities/TagSettingsActivity.java index 0586e1954..491275acb 100644 --- a/app/src/main/java/org/tasks/activities/TagSettingsActivity.java +++ b/app/src/main/java/org/tasks/activities/TagSettingsActivity.java @@ -155,6 +155,7 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implem protected void showThemePicker() { Intent intent = new Intent(TagSettingsActivity.this, ColorPickerActivity.class); intent.putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerDialog.ColorPalette.COLORS); + intent.putExtra(ColorPickerActivity.EXTRA_THEME_INDEX, selectedTheme); intent.putExtra(ColorPickerActivity.EXTRA_SHOW_NONE, true); startActivityForResult(intent, REQUEST_COLOR_PICKER); } diff --git a/app/src/main/java/org/tasks/calendars/AndroidCalendar.java b/app/src/main/java/org/tasks/calendars/AndroidCalendar.java index 53c032ac5..f44496cbb 100644 --- a/app/src/main/java/org/tasks/calendars/AndroidCalendar.java +++ b/app/src/main/java/org/tasks/calendars/AndroidCalendar.java @@ -3,10 +3,12 @@ package org.tasks.calendars; public class AndroidCalendar { private final String id; private final String name; + private final int color; - public AndroidCalendar(String id, String name) { + public AndroidCalendar(String id, String name, int color) { this.id = id; this.name = name; + this.color = color; } public String getId() { @@ -17,11 +19,16 @@ public class AndroidCalendar { return name; } + public int getColor() { + return color; + } + @Override public String toString() { return "AndroidCalendar{" + "id='" + id + '\'' + ", name='" + name + '\'' + + ", color=" + color + '}'; } } diff --git a/app/src/main/java/org/tasks/calendars/CalendarProvider.java b/app/src/main/java/org/tasks/calendars/CalendarProvider.java index c00a6e2ad..cab3ac203 100644 --- a/app/src/main/java/org/tasks/calendars/CalendarProvider.java +++ b/app/src/main/java/org/tasks/calendars/CalendarProvider.java @@ -7,6 +7,8 @@ import android.net.Uri; import android.provider.CalendarContract; import android.support.annotation.Nullable; +import com.google.common.base.Strings; + import org.tasks.injection.ForApplication; import org.tasks.preferences.PermissionChecker; @@ -26,7 +28,8 @@ public class CalendarProvider { private static final String SORT = CalendarContract.Calendars.CALENDAR_DISPLAY_NAME + " ASC"; private static final String[] COLUMNS = { _ID, - CalendarContract.Calendars.CALENDAR_DISPLAY_NAME + CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, + CalendarContract.Calendars.CALENDAR_COLOR }; private final PermissionChecker permissionChecker; @@ -44,6 +47,9 @@ public class CalendarProvider { @Nullable public AndroidCalendar getCalendar(String id) { + if (Strings.isNullOrEmpty(id)) { + return null; + } List calendars = getCalendars(CalendarContract.Calendars.CONTENT_URI, CAN_MODIFY + " AND Calendars._id=" + id); return calendars.isEmpty() ? null : calendars.get(0); } @@ -60,8 +66,9 @@ public class CalendarProvider { if (cursor != null && cursor.getCount() > 0) { int idColumn = cursor.getColumnIndex(_ID); int nameColumn = cursor.getColumnIndex(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME); + int colorColumn = cursor.getColumnIndex(CalendarContract.Calendars.CALENDAR_COLOR); while (cursor.moveToNext()) { - calendars.add(new AndroidCalendar(cursor.getString(idColumn), cursor.getString(nameColumn))); + calendars.add(new AndroidCalendar(cursor.getString(idColumn), cursor.getString(nameColumn), cursor.getInt(colorColumn))); } } } catch (Exception e) { diff --git a/app/src/main/java/org/tasks/dialogs/ColorPickerDialog.java b/app/src/main/java/org/tasks/dialogs/ColorPickerDialog.java index 9820fed03..03fe6b856 100644 --- a/app/src/main/java/org/tasks/dialogs/ColorPickerDialog.java +++ b/app/src/main/java/org/tasks/dialogs/ColorPickerDialog.java @@ -25,6 +25,7 @@ import javax.inject.Inject; public class ColorPickerDialog extends InjectingDialogFragment { private static final String EXTRA_PALETTE = "extra_palette"; + private static final String EXTRA_SELECTED = "extra_selected"; private static final String EXTRA_SHOW_NONE = "extra_show_none"; public enum ColorPalette {THEMES, COLORS, ACCENTS, WIDGET_BACKGROUND} @@ -37,10 +38,11 @@ public class ColorPickerDialog extends InjectingDialogFragment { void dismissed(); } - public static ColorPickerDialog newColorPickerDialog(ColorPalette palette, boolean showNone) { + public static ColorPickerDialog newColorPickerDialog(ColorPalette palette, boolean showNone, int selection) { ColorPickerDialog dialog = new ColorPickerDialog(); Bundle args = new Bundle(); args.putSerializable(EXTRA_PALETTE, palette); + args.putInt(EXTRA_SELECTED, selection); args.putBoolean(EXTRA_SHOW_NONE, showNone); dialog.setArguments(args); return dialog; @@ -64,6 +66,7 @@ public class ColorPickerDialog extends InjectingDialogFragment { Bundle arguments = getArguments(); palette = (ColorPalette) arguments.getSerializable(EXTRA_PALETTE); boolean showNone = arguments.getBoolean(EXTRA_SHOW_NONE); + int selected = arguments.getInt(EXTRA_SELECTED, -1); final List themes = Arrays.asList(context.getResources().getStringArray(getNameRes())); @@ -80,7 +83,7 @@ public class ColorPickerDialog extends InjectingDialogFragment { return getDisplayColor(position); } }; - adapter.setChecked(getCurrentSelection()); + adapter.setChecked(selected); AlertDialogBuilder builder = dialogBuilder.newDialog(theme) .setAdapter(adapter, (dialog, which) -> { @@ -127,17 +130,6 @@ public class ColorPickerDialog extends InjectingDialogFragment { component.inject(this); } - private int getCurrentSelection() { - switch (palette) { - case COLORS: - return theme.getThemeColor().getIndex(); - case ACCENTS: - return theme.getThemeAccent().getIndex(); - default: - return theme.getThemeBase().getIndex(); - } - } - private int getNameRes() { switch (palette) { case COLORS: diff --git a/app/src/main/java/org/tasks/preferences/ResourceResolver.java b/app/src/main/java/org/tasks/preferences/ResourceResolver.java index f3088746d..661348c53 100644 --- a/app/src/main/java/org/tasks/preferences/ResourceResolver.java +++ b/app/src/main/java/org/tasks/preferences/ResourceResolver.java @@ -11,6 +11,12 @@ public class ResourceResolver { return typedValue.data; } + @Deprecated public static float getDimen(Context context, int resId) { + TypedValue typedValue = new TypedValue(); + context.getResources().getValue(resId, typedValue, true); + return typedValue.getFloat(); + } + @Deprecated public static int getResourceId(Context context, int attr) { TypedValue typedValue = new TypedValue(); context.getTheme().resolveAttribute(attr, typedValue, true); diff --git a/app/src/main/java/org/tasks/ui/CalendarControlSet.java b/app/src/main/java/org/tasks/ui/CalendarControlSet.java index 1befe0f2c..ceed06de0 100644 --- a/app/src/main/java/org/tasks/ui/CalendarControlSet.java +++ b/app/src/main/java/org/tasks/ui/CalendarControlSet.java @@ -55,7 +55,6 @@ public class CalendarControlSet extends TaskEditControlFragment { private static final String EXTRA_URI = "extra_uri"; private static final String EXTRA_ID = "extra_id"; - private static final String EXTRA_NAME = "extra_name"; @BindView(R.id.clear) View cancelButton; @BindView(R.id.calendar_display_which) TextView calendar; @@ -72,7 +71,6 @@ public class CalendarControlSet extends TaskEditControlFragment { @Inject CalendarEventProvider calendarEventProvider; private String calendarId; - private String calendarName; private String eventUri; private boolean isNewTask; @@ -83,7 +81,6 @@ public class CalendarControlSet extends TaskEditControlFragment { boolean canAccessCalendars = permissionChecker.canAccessCalendars(); if (savedInstanceState != null) { eventUri = savedInstanceState.getString(EXTRA_URI); - calendarName = savedInstanceState.getString(EXTRA_NAME); calendarId = savedInstanceState.getString(EXTRA_ID); } else if (isNewTask && canAccessCalendars) { calendarId = preferences.getDefaultCalendar(); @@ -92,8 +89,6 @@ public class CalendarControlSet extends TaskEditControlFragment { AndroidCalendar defaultCalendar = calendarProvider.getCalendar(calendarId); if (defaultCalendar == null) { calendarId = null; - } else { - calendarName = defaultCalendar.getName(); } } catch (Exception e) { Timber.e(e, e.getMessage()); @@ -210,7 +205,6 @@ public class CalendarControlSet extends TaskEditControlFragment { super.onSaveInstanceState(outState); outState.putString(EXTRA_URI, eventUri); - outState.putString(EXTRA_NAME, calendarName); outState.putString(EXTRA_ID, calendarId); } @@ -231,7 +225,6 @@ public class CalendarControlSet extends TaskEditControlFragment { } private void clear() { - calendarName = null; calendarId = null; eventUri = null; refreshDisplayView(); @@ -241,7 +234,7 @@ public class CalendarControlSet extends TaskEditControlFragment { void clickCalendar(View view) { if (Strings.isNullOrEmpty(eventUri)) { Intent intent = new Intent(context, CalendarSelectionActivity.class); - intent.putExtra(CalendarSelectionActivity.EXTRA_CALENDAR_NAME, calendarName); + intent.putExtra(CalendarSelectionActivity.EXTRA_CALENDAR_NAME, getCalendarName()); startActivityForResult(intent, REQUEST_CODE_PICK_CALENDAR); } else { if (permissionRequestor.requestCalendarPermissions(REQUEST_CODE_OPEN_EVENT)) { @@ -280,7 +273,6 @@ public class CalendarControlSet extends TaskEditControlFragment { if (requestCode == REQUEST_CODE_PICK_CALENDAR) { if (resultCode == Activity.RESULT_OK) { calendarId = data.getStringExtra(CalendarSelectionActivity.EXTRA_CALENDAR_ID); - calendarName = data.getStringExtra(CalendarSelectionActivity.EXTRA_CALENDAR_NAME); refreshDisplayView(); } } else { @@ -288,6 +280,14 @@ public class CalendarControlSet extends TaskEditControlFragment { } } + private String getCalendarName() { + if (calendarId == null) { + return null; + } + AndroidCalendar calendar = calendarProvider.getCalendar(calendarId); + return calendar == null ? null : calendar.getName(); + } + @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == REQUEST_CODE_OPEN_EVENT) { @@ -308,12 +308,12 @@ public class CalendarControlSet extends TaskEditControlFragment { calendar.setText(R.string.gcal_TEA_showCalendar_label); calendar.setTextColor(getColor(context, R.color.text_primary)); cancelButton.setVisibility(View.VISIBLE); - } else if (calendarName != null) { - calendar.setText(calendarName); + } else if (calendarId != null) { + calendar.setText(getCalendarName()); calendar.setTextColor(getColor(context, R.color.text_primary)); - cancelButton.setVisibility(View.VISIBLE); + cancelButton.setVisibility(View.GONE); } else { - calendar.setText(R.string.gcal_TEA_addToCalendar_label); + calendar.setText(R.string.dont_add_to_calendar); calendar.setTextColor(getColor(context, R.color.text_tertiary)); cancelButton.setVisibility(View.GONE); } diff --git a/app/src/main/java/org/tasks/ui/SingleCheckedArrayAdapter.java b/app/src/main/java/org/tasks/ui/SingleCheckedArrayAdapter.java index 0f35727a5..07958121d 100644 --- a/app/src/main/java/org/tasks/ui/SingleCheckedArrayAdapter.java +++ b/app/src/main/java/org/tasks/ui/SingleCheckedArrayAdapter.java @@ -18,12 +18,16 @@ import java.util.List; import static com.todoroo.andlib.utility.AndroidUtilities.atLeastJellybeanMR1; import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop; +import static org.tasks.preferences.ResourceResolver.getData; +import static org.tasks.preferences.ResourceResolver.getDimen; public class SingleCheckedArrayAdapter extends ArrayAdapter { @NonNull private final Context context; private final List items; private final ThemeAccent accent; + private final int alpha; + private final int tint; private int checkedPosition = -1; public SingleCheckedArrayAdapter(@NonNull Context context, @NonNull List items, ThemeAccent accent) { @@ -31,6 +35,8 @@ public class SingleCheckedArrayAdapter extends ArrayAdapter { this.context = context; this.items = items; this.accent = accent; + this.alpha = (int)(255 * getDimen(context, R.dimen.alpha_secondary)); + this.tint = getData(context, R.attr.icon_tint); } @NonNull @@ -53,9 +59,15 @@ public class SingleCheckedArrayAdapter extends ArrayAdapter { } int drawable = getDrawable(position); if (drawable > 0) { - int color = getDrawableColor(position); Drawable original = ContextCompat.getDrawable(context, drawable); Drawable wrapped = DrawableCompat.wrap(original.mutate()); + int color = getDrawableColor(position); + if (color == 0) { + color = tint; + wrapped.setAlpha(alpha); + } else if (color == -1) { + wrapped.setAlpha(0); + } DrawableCompat.setTint(wrapped, color); if (atLeastJellybeanMR1()) { view.setCompoundDrawablesRelativeWithIntrinsicBounds(wrapped, null, null, null); diff --git a/app/src/main/java/org/tasks/widget/WidgetConfigActivity.java b/app/src/main/java/org/tasks/widget/WidgetConfigActivity.java index 20702144e..4d7dc6750 100644 --- a/app/src/main/java/org/tasks/widget/WidgetConfigActivity.java +++ b/app/src/main/java/org/tasks/widget/WidgetConfigActivity.java @@ -85,6 +85,7 @@ public class WidgetConfigActivity extends InjectingPreferenceActivity implements findPreference(R.string.p_widget_theme).setOnPreferenceClickListener(preference -> { Intent intent = new Intent(WidgetConfigActivity.this, ColorPickerActivity.class); intent.putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerDialog.ColorPalette.WIDGET_BACKGROUND); + intent.putExtra(ColorPickerActivity.EXTRA_THEME_INDEX, widgetPreferences.getThemeIndex()); startActivityForResult(intent, REQUEST_THEME_SELECTION); return false; }); @@ -94,6 +95,7 @@ public class WidgetConfigActivity extends InjectingPreferenceActivity implements colorPreference.setOnPreferenceClickListener(preference -> { Intent intent = new Intent(WidgetConfigActivity.this, ColorPickerActivity.class); intent.putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerDialog.ColorPalette.COLORS); + intent.putExtra(ColorPickerActivity.EXTRA_THEME_INDEX, widgetPreferences.getColorIndex()); startActivityForResult(intent, REQUEST_COLOR_SELECTION); return false; }); diff --git a/app/src/main/res/layout/simple_list_item_multiple_choice_themed.xml b/app/src/main/res/layout/simple_list_item_multiple_choice_themed.xml index a63468585..c5943b6fb 100644 --- a/app/src/main/res/layout/simple_list_item_multiple_choice_themed.xml +++ b/app/src/main/res/layout/simple_list_item_multiple_choice_themed.xml @@ -6,7 +6,7 @@ افتراضيات المهمه الموعد الأخير الإفتراضي منبهات افتراضية - أضف إلى التقويم بشكل افتراضي نوع رنين/اهتزاز افتراضي بعد غد الأسبوع القادم @@ -85,7 +84,6 @@ الشهر القادم العنوان يحتوي على.. العنوان يحتوي على :? - أضف إلى التقويم إفتح أحداث التقويم في القائمة :? انتهاء الحذف diff --git a/app/src/main/res/values-bg-rBG/strings.xml b/app/src/main/res/values-bg-rBG/strings.xml index 3774cf53b..f4b899eaf 100644 --- a/app/src/main/res/values-bg-rBG/strings.xml +++ b/app/src/main/res/values-bg-rBG/strings.xml @@ -121,7 +121,6 @@ Приоритет по подразбиране Скрий до - по подразбиране Напомняния по подразбиране - Добави към календара по подразбиране Тон на звънене/вибрация по подразбиране Висок Среден @@ -156,7 +155,6 @@ Имена съдържащи... Името съдържа: ? Грешка при добавяне на задачата към каледнара! - Добави към календара Добави събитие към календара Изтриване на събитие в календара? Събитието в календара не е намерено diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 43fc9c01b..de5722116 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -85,7 +85,6 @@ El títol conté... Títol conté: ? Error afegint la tasca al calendari! - Afegeix al calendari Obrir Event del Calendari %s (completada) Neteja les tasques completades diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index f63a5b18f..bfa9d074a 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -113,7 +113,6 @@ Výchozí důležitost Výchozí Skrýt do Výchozí připomenutí - Výchozí přidání do kalendáře Výchozí vyzvánění / vybrace Vysoký Střední @@ -145,7 +144,6 @@ Název obsahuje... Obsahuje název: ? Chyba při přidávání úkolu do kalendáře! - Vytvořit událost kalendáře Otevřít událost v kalendáři Smazat událost v kalendáři? %s (dokončeno) diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 08bfdb90f..8f5a73ae6 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -71,7 +71,6 @@ Titel indeholder... Titel indeholder: ? Fejl ved tilføjelse af opgave til kalender! - Tilføj til kalender Åbn kalender-begivenhed %s (fuldført) Google Tasks (beta!) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index fe6efd017..c431fa3c5 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -116,7 +116,6 @@ Standard-Priorität Standardmäßig verstecken bis Standard-Erinnerungen - Standardmäßig in Kalender eintragen Standard-Alarm/Vibrationssignal Hoch Mittel @@ -150,7 +149,6 @@ Titel enthält … Titel enthält: ? Fehler beim Hinzufügen der Aufgabe zum Kalender! - In Kalender eintragen Öffne Kalendereintrag Kalendereintrag löschen? Kalendereintrag nicht gefunden diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 76a59bdfc..b4eb2438d 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -101,7 +101,6 @@ Προκαθορισμένη προτεραιότητα Προκαθορισμένη απόκρυψη μέχρι Προκαθορισμένες υπενθυμίσεις - Προκαθορισμένη προσθήκη σε ημερολόγιο Προκαθορισμένος ήχος/τύπος δόνησης Χωρίς προθεσμία Μεθαύριο @@ -126,7 +125,6 @@ Ο τίτλος περιέχει... Ο τίτλος περιέχει: ? Σφάλμα πρόσθεσης καθήκοντος στο ημερολόγιο! - Προσθήκη στο ημερολόγιο Άνοιγμα event ημερολογίου %s (έχει ολοκληρωθεί) Στην λίστα: ? diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 343dbe253..da5dc19e7 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -117,7 +117,6 @@ Prioridad predeterminada Ocultar por defecto hasta Recordatorios por defecto - Por defecto, agregar al calendario Tipo predeterminado de timbre/vibración Alta Media @@ -152,7 +151,6 @@ Título contiene... Título contiene: ? ¡Ocurrió un error al agregar la tarea al calendario! - Agregar al calendario Abrir evento del calendario ¿Borrar evento de calendario? Evento de calendario no encontrado diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 006427663..6bd4caf0e 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -109,7 +109,6 @@ تگ... عنوان شامل خطا در اضافه کردن وظیفه به تقویم - اضاقه به تقویم بازکردن رویداد تقویم %s (کامل‌شده) حذف انجام شد diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 7ed33ca31..e29591e49 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -121,7 +121,6 @@ Oletusprioriteetti Oletus piilota kunnes Oletusmuistutukset - Oletus lisää kalenteriin Oletussoittoääni/värinä -tyyppi Korkea Kohtalainen @@ -156,7 +155,6 @@ Otsikko sisältää.. Otsikko sisältää: ? Virhe lisättäessä tapahtumaa kalenteriin! - Lisää kalenteri Avaa tapahtumakalenteri Poista kalenteritapahtuma Kalenteritapahtumaa ei löydy diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 6da6f90b0..62e22b703 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -116,7 +116,6 @@ Priorité par défaut Masquer par défaut jusqu\'à Rappels par défaut - Ajout au calendrier par défaut Type de sonnerie/vibration par défaut Haute Moyenne @@ -150,7 +149,6 @@ Le titre contient... Titre contient: ? Erreur d\'ajout de tâche à l\'agenda ! - Créer un évènement d\'agenda Ouvrir l\'événement de l\'agenda Supprimer l\'événement ? Événement non trouvé diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 5460c36d8..052a2a669 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -117,7 +117,6 @@ Prioridad predeterminada Ocultar por defecto hasta Recordatorios por defecto - Por defecto, agregar al calendario Tipo predeterminado de timbre/vibración Alta Media @@ -152,7 +151,6 @@ Título contiene... Contén título:? Erro ao engadir a tarefa ao calendario! - Engadir ao calendario Abrir o evento do calendario ¿Borrar evento de calendario? diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 151932672..f7beaab96 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -121,7 +121,6 @@ Alapértelmezett prioritás Alapértelmezett elrejtési idő Alapértelmezett emlékeztetők - Naptárhoz való hozzáadás alapértelmezése Alapértelmezett csengetés/rezgés típusa Magas Közepes @@ -156,7 +155,6 @@ A név tartalmazza ezt.. A név tartalmazza ezt: ? Nem sikerült a feladat hozzáadása a naptárhoz! - Hozzáadás a naptárhoz Naptáresemény megnyitása Naptárbejegyzés törlése? Naptáresemény nem található diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 76507b874..20b7c548a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -118,7 +118,6 @@ Priorità predefinita Nascondi Fino Predefinito Promemoria predefiniti - Aggiungi automaticamente al calendario Tipo di squillo/vibrazione predefinito Alta Media @@ -153,7 +152,6 @@ Il titolo contiene... Il titolo contiene: ? Errore durante l\'aggiunta dell\'attività al calendario! - Aggiungi al Calendario Apri Calendario Eventi Cancello evento dal calendario? Evento non trovato diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 12d82caef..8bdd4976c 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -118,7 +118,6 @@ עדיפות מחדל ברירת מחדל לזמן הסתרה תזכורות ברירת מחדל - הוספה ליומן כברירת מחדל ברירת מחדל לסוג צלצול/רטט גבוה בינוני @@ -153,7 +152,6 @@ כותרת מכילה... כותרת מכילה: ? שגיאה בהוספת המשימה ליומן! - הוסף ליומן פתח אירוע ביומן למחוק אירוע ? אירוע לא נמצא diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 34ab3b0ea..aa0cc1659 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -118,7 +118,6 @@ 標準の優先順位 表示期間 標準リマインダー - デフォルトでカレンダーに登録 標準の通知音、振動種類 @@ -153,7 +152,6 @@ タイトル中の語句 タイトルに ? を含む カレンダーへの登録に失敗しました - カレンダーに登録 カレンダーのイベントを開く カレンダーイベントを削除しますか? カレンダーイベントが見つかりません diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index e519bb689..bdd709a8d 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -122,7 +122,6 @@ 기본 우선순위 기본 숨기기 기간: 기본 알림 - 달력에 추가하기 (기본값) 기본 벨소리/진동 형식 높음 중간 @@ -157,7 +156,6 @@ 제목이 다음을 포함... 제목이 다음을 포함: ? 달력에 할일 추가 실패! - 달력에 일정 추가하기 달력 이벤트 열기 달력 일정을 지울까요? 캘린더 일정이 발견되지 않음 diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index dba901942..06f5f4d85 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -64,7 +64,6 @@ Tittel inneholder... Tittel inneholder: ? Klarte ikke å legge oppgave til kalender! - Legg til i kalender Åpne kalenderhendelse %s (fullført) I liste: ? diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index baf596155..ec6ad1654 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -117,7 +117,6 @@ Standaard prioriteit Standaard verbergen tot Standaard herinneringen - Standaard Toevoegen aan Agenda Standaard toon/tril type Hoog Middelmatig @@ -152,7 +151,6 @@ Naam bevat... Naam bevat: ? Fout bij toevoegen taak aan agenda! - Toevoegen aan Agenda Gebeurtenis openen Verwijder kalender item? Kalender item niet gevonden diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index dc34e0f72..124a70b5e 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -118,7 +118,6 @@ Domyślny priorytet Ukrywanie zadania (domyślnie) Przypomnienia (domyślnie) - Domyślnie dodawaj do kalendarza Domyślny dzwonek/wibracja Ważne Średnio ważne @@ -152,7 +151,6 @@ Tytuł zawiera... Tytuł zawiera: ? Błąd podczas dodawania zadania do kalendarza! - Dodaj do kalendarza Otwórz zdarzenie kalendarza Usunąć zdarzenie kalendarza? Zdarzenie kalendarza nie odnazlezione diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index b9b2d0a29..750d4684a 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -115,7 +115,6 @@ Prioridade padrão Padrão de Ocultar até Lembretes padrões - Padrão para Inserir no Calendário Tipo de toque/vibração padrão Alta Média @@ -149,7 +148,6 @@ Título... Título contêm: ? Erro ao inserir a tarefa no calendário! - Inserir no calendário Abrir evento no calendário Excluir evento no calendário? Evento no calendário não encontrado diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index d834890bd..5fe7542e4 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -109,7 +109,6 @@ Prioridade predefinida Predefinição de ocultar até Lembretes predefinidos - Predefinição ao adicionar ao calendário Tipo de vibração/toque predefinido Sem data limite Depois de amanhã @@ -141,7 +140,6 @@ Título contém... Título contém: ? Erro ao adicionar tarefa ao calendário! - Adicionar ao calendário Abrir evento no calendário %s (terminada) Na lista: ? diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index ff2b1a29a..fb3eb5fb6 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -118,7 +118,6 @@ Приоритет по умолчанию Срок скрытия по умолчанию Напоминания по умолчанию - Добавлять в календарь по умолчанию Тип звонка/вибрации по умолчанию Высокий Средний @@ -153,7 +152,6 @@ Название содержит... Название содержит: ? Ошибка при добавлении задачи в календарь! - Добавить в календарь Открыть событие календаря Удалить событие в календаре? Событие в календаре не найдено diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 3ea7e9a10..ee1f3d010 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -107,7 +107,6 @@ Predvolená priorita Predvoliť Skryť do Predvolené pripomienky - Predvoliť pridanie do kalendára Východzie vyzváňanie/vybrovanie Žiaden termín Pozajtra @@ -135,7 +134,6 @@ Názov obsahuje... Zoznam obsahuje: ? Chyba pridania úlohy do kalendára! - Pridať do kalendára Otvoriť udalosť kalendára %s (dokončené) V zozname: ? diff --git a/app/src/main/res/values-sl-rSI/strings.xml b/app/src/main/res/values-sl-rSI/strings.xml index 17804d2f1..77e13978e 100644 --- a/app/src/main/res/values-sl-rSI/strings.xml +++ b/app/src/main/res/values-sl-rSI/strings.xml @@ -102,7 +102,6 @@ Privzeta dospelost Privzeto skrij do Privzeti opomniki - Privzeto dodati na koledar Privzeti način zvonenja/vibriranja Brez dospelosti Pojutrišnjem @@ -130,7 +129,6 @@ Naslov vsebuje ... Naslov vsebuje: ? Napaka pri dodajanju opravila! - Dodaj v koledar Odpri dogodek v koledarju %s (končani) V seznamu: ? diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index a8d76882e..e9f96ac60 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -118,7 +118,6 @@ Standard prioritet Standard Dölj tills Standardpåminnelser - Standardkalender för att lägga till händelser Standardtyp av ringsignal/vibration Hög Medel @@ -153,7 +152,6 @@ Titeln innehåller... Titeln innehåller: ? Misslyckades med att lägga uppgift till kalender! - Skapa kalenderhändelse Öppna kalenderhändelse Ta bort kalenderhändelse? Kalenderhändelsen hittades inte diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index d0d6776bc..f7b1f03c7 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -122,7 +122,6 @@ Öntanımlı öncelik Öntanımlı Gizlenme Öntanımlı Hatırlatmalar - Öntanımlı olarak Takvime Ekle Varsayılan Zil/Titreşim tipi Yüksek Orta @@ -157,7 +156,6 @@ Başlık şunu içersin... Başlık şunu içersin:? Takvime görev eklenmesinde hata! - Takvime Ekle Takvim Olayı Aç Takvim etkinliğini sil? Takvim etkinliği bulunamadı diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 576c65abb..3627a7d91 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -121,7 +121,6 @@ Пріоритет по замовчуванню Термін приховування за замовчуванням Нагадування по замовчуванню - Додавати в календар по замовчуванню Тип дзвінка/вібрація по замовчуванню Високий Середній @@ -156,7 +155,6 @@ Заголовок містить... Заголовок містить: ? Помилка при додаванні завдання в календар! - Додати до календаря Відкрити календарну подію Видалити подію календаря? Подію календаря не знайдено diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index e76ed78d3..a6d9addcb 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -87,7 +87,6 @@ 默认优先级 默认隐藏直到 默认提醒 - 默认添加到日历 默认铃声/振动类型 @@ -116,7 +115,6 @@ 标题含... 标题含: ? 添加任务到日历时失败! - 建立日程表事件 打开日程表事件 删除日程表时间 %s (已完成) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index b45cf9dd4..38f2c76e6 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -93,7 +93,6 @@ 預設優先權 預設隱藏直到... 預設提醒 - 默認添加到日曆 預設鈴聲 / 震動類型 @@ -122,7 +121,6 @@ 主旨含... 主旨含: ? 工作加入行事曆錯誤 - 建立行事曆事項 打開行事曆事項 %s (已完成) 列表內容: ? diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 935896464..53816c8dc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -311,9 +311,6 @@ File %1$s contained %2$s.\n\n Default reminders - - Default add to calendar - Default ring/vibrate type @@ -400,9 +397,6 @@ File %1$s contained %2$s.\n\n Error adding task to calendar! - - Add to Calendar - Open Calendar Event @@ -853,4 +847,6 @@ File %1$s contained %2$s.\n\n Repeats every %s on %s Repeats every %s on %s until %s ,\u0020 + Don\'t add to calendar + Default calendar diff --git a/app/src/main/res/xml/preferences_defaults.xml b/app/src/main/res/xml/preferences_defaults.xml index c3679fb3c..1613ed786 100644 --- a/app/src/main/res/xml/preferences_defaults.xml +++ b/app/src/main/res/xml/preferences_defaults.xml @@ -44,6 +44,6 @@ + android:title="@string/default_calendar" + android:summary="@string/dont_add_to_calendar"/>