|
|
@ -11,11 +11,9 @@ import android.support.annotation.NonNull;
|
|
|
|
import android.support.annotation.Nullable;
|
|
|
|
import android.support.annotation.Nullable;
|
|
|
|
import android.support.v4.content.ContextCompat;
|
|
|
|
import android.support.v4.content.ContextCompat;
|
|
|
|
import android.support.v4.graphics.drawable.DrawableCompat;
|
|
|
|
import android.support.v4.graphics.drawable.DrawableCompat;
|
|
|
|
import android.view.LayoutInflater;
|
|
|
|
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
import android.widget.ArrayAdapter;
|
|
|
|
import android.widget.CheckedTextView;
|
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.tasks.R;
|
|
|
|
import org.tasks.R;
|
|
|
|
import org.tasks.injection.DialogFragmentComponent;
|
|
|
|
import org.tasks.injection.DialogFragmentComponent;
|
|
|
@ -24,6 +22,10 @@ import org.tasks.injection.InjectingDialogFragment;
|
|
|
|
import org.tasks.preferences.Preferences;
|
|
|
|
import org.tasks.preferences.Preferences;
|
|
|
|
import org.tasks.themes.Theme;
|
|
|
|
import org.tasks.themes.Theme;
|
|
|
|
import org.tasks.themes.ThemeCache;
|
|
|
|
import org.tasks.themes.ThemeCache;
|
|
|
|
|
|
|
|
import org.tasks.ui.SingleCheckedArrayAdapter;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
import javax.inject.Inject;
|
|
|
|
import javax.inject.Inject;
|
|
|
|
|
|
|
|
|
|
|
@ -61,7 +63,7 @@ public class ColorPickerDialog extends InjectingDialogFragment {
|
|
|
|
|
|
|
|
|
|
|
|
private ColorPalette palette;
|
|
|
|
private ColorPalette palette;
|
|
|
|
private ThemePickerCallback callback;
|
|
|
|
private ThemePickerCallback callback;
|
|
|
|
private ArrayAdapter<String> adapter;
|
|
|
|
private SingleCheckedArrayAdapter adapter;
|
|
|
|
private Dialog dialog;
|
|
|
|
private Dialog dialog;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
@ -72,21 +74,14 @@ public class ColorPickerDialog extends InjectingDialogFragment {
|
|
|
|
palette = (ColorPalette) arguments.getSerializable(EXTRA_PALETTE);
|
|
|
|
palette = (ColorPalette) arguments.getSerializable(EXTRA_PALETTE);
|
|
|
|
boolean showNone = arguments.getBoolean(EXTRA_SHOW_NONE);
|
|
|
|
boolean showNone = arguments.getBoolean(EXTRA_SHOW_NONE);
|
|
|
|
|
|
|
|
|
|
|
|
if (palette == ColorPickerDialog.ColorPalette.THEMES || palette == ColorPickerDialog.ColorPalette.WIDGET_BACKGROUND) {
|
|
|
|
final List<String> themes = Arrays.asList(context.getResources().getStringArray(getNameRes()));
|
|
|
|
theme = theme.withBaseTheme(themeCache.getThemeBase(2));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final String[] themes = context.getResources().getStringArray(getNameRes());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final LayoutInflater inflater = theme.getLayoutInflater(context);
|
|
|
|
adapter = new SingleCheckedArrayAdapter(context, R.layout.color_selection_row, themes, theme.getThemeAccent()) {
|
|
|
|
adapter = new ArrayAdapter<String>(context, R.layout.color_selection_row, themes) {
|
|
|
|
|
|
|
|
@NonNull
|
|
|
|
@NonNull
|
|
|
|
@SuppressLint("NewApi")
|
|
|
|
@SuppressLint("NewApi")
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
|
|
|
|
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
|
|
|
|
TextView textView = (TextView) (convertView == null
|
|
|
|
CheckedTextView textView = (CheckedTextView) super.getView(position, convertView, parent);
|
|
|
|
? inflater.inflate(R.layout.color_selection_row, parent, false)
|
|
|
|
|
|
|
|
: convertView);
|
|
|
|
|
|
|
|
Drawable original = ContextCompat.getDrawable(context, preferences.hasPurchase(R.string.p_purchased_themes) || position < getNumFree()
|
|
|
|
Drawable original = ContextCompat.getDrawable(context, preferences.hasPurchase(R.string.p_purchased_themes) || position < getNumFree()
|
|
|
|
? R.drawable.ic_lens_black_24dp
|
|
|
|
? R.drawable.ic_lens_black_24dp
|
|
|
|
: R.drawable.ic_vpn_key_black_24dp);
|
|
|
|
: R.drawable.ic_vpn_key_black_24dp);
|
|
|
@ -97,10 +92,10 @@ public class ColorPickerDialog extends InjectingDialogFragment {
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
textView.setCompoundDrawablesWithIntrinsicBounds(wrapped, null, null, null);
|
|
|
|
textView.setCompoundDrawablesWithIntrinsicBounds(wrapped, null, null, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
textView.setText(themes[position]);
|
|
|
|
|
|
|
|
return textView;
|
|
|
|
return textView;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
adapter.setChecked(getCurrentSelection());
|
|
|
|
|
|
|
|
|
|
|
|
AlertDialogBuilder builder = dialogBuilder.newDialog(theme)
|
|
|
|
AlertDialogBuilder builder = dialogBuilder.newDialog(theme)
|
|
|
|
.setAdapter(adapter, (dialog, which) -> {
|
|
|
|
.setAdapter(adapter, (dialog, which) -> {
|
|
|
@ -110,7 +105,7 @@ public class ColorPickerDialog extends InjectingDialogFragment {
|
|
|
|
callback.initiateThemePurchase();
|
|
|
|
callback.initiateThemePurchase();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.setNegativeButton(android.R.string.cancel, (dialogInterface, i) -> callback.dismissed());
|
|
|
|
.setOnDismissListener(dialogInterface -> callback.dismissed());
|
|
|
|
if (showNone) {
|
|
|
|
if (showNone) {
|
|
|
|
builder.setNeutralButton(R.string.none, (dialogInterface, i) -> callback.themePicked(palette, -1));
|
|
|
|
builder.setNeutralButton(R.string.none, (dialogInterface, i) -> callback.themePicked(palette, -1));
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -147,6 +142,17 @@ public class ColorPickerDialog extends InjectingDialogFragment {
|
|
|
|
component.inject(this);
|
|
|
|
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() {
|
|
|
|
private int getNameRes() {
|
|
|
|
switch (palette) {
|
|
|
|
switch (palette) {
|
|
|
|
case COLORS:
|
|
|
|
case COLORS:
|
|
|
|