mirror of https://github.com/tasks/tasks
Additional theme support
parent
df64627b8a
commit
ef9030bfe1
@ -0,0 +1,101 @@
|
||||
package org.tasks.dialogs;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.graphics.drawable.DrawableCompat;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.tasks.R;
|
||||
import org.tasks.injection.DialogFragmentComponent;
|
||||
import org.tasks.injection.ForApplication;
|
||||
import org.tasks.injection.InjectingDialogFragment;
|
||||
import org.tasks.preferences.ActivityPreferences;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class ColorPickerDialog extends InjectingDialogFragment {
|
||||
|
||||
public interface ColorPickerCallback {
|
||||
void colorPicked(int index);
|
||||
|
||||
void initiateThemePurchase();
|
||||
}
|
||||
|
||||
@Inject DialogBuilder dialogBuilder;
|
||||
@Inject @ForApplication Context context;
|
||||
@Inject ActivityPreferences activityPreferences;
|
||||
|
||||
private ColorPickerCallback callback;
|
||||
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
|
||||
final String[] themes = context.getResources().getStringArray(R.array.themes);
|
||||
|
||||
final boolean purchasedThemes = activityPreferences.hasPurchase(R.string.p_purchased_themes);
|
||||
|
||||
ListAdapter adapter = new ArrayAdapter<String>(context, R.layout.color_selection_row, themes) {
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
View row = convertView;
|
||||
|
||||
if (row == null) {
|
||||
LayoutInflater inflater = getActivity().getLayoutInflater();
|
||||
row = inflater.inflate(R.layout.color_selection_row, parent, false);
|
||||
}
|
||||
|
||||
Resources resources = context.getResources();
|
||||
|
||||
ImageView primary = (ImageView) row.findViewById(R.id.color_primary);
|
||||
Drawable original = resources.getDrawable(purchasedThemes || position < 2
|
||||
? R.drawable.ic_lens_black_24dp
|
||||
: R.drawable.ic_vpn_key_black_24dp);
|
||||
Drawable wrapped = DrawableCompat.wrap(original.mutate());
|
||||
DrawableCompat.setTint(wrapped, activityPreferences.getPrimaryColor(position));
|
||||
primary.setImageDrawable(wrapped);
|
||||
|
||||
TextView text = (TextView) row.findViewById(android.R.id.text1);
|
||||
text.setText(themes[position]);
|
||||
|
||||
return row;
|
||||
}
|
||||
};
|
||||
|
||||
return dialogBuilder.newDialog()
|
||||
.setAdapter(adapter, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
if (purchasedThemes || which < 2) {
|
||||
callback.colorPicked(which);
|
||||
} else {
|
||||
callback.initiateThemePurchase();
|
||||
}
|
||||
}
|
||||
})
|
||||
.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Activity activity) {
|
||||
super.onAttach(activity);
|
||||
|
||||
callback = (ColorPickerCallback) activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void inject(DialogFragmentComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2z"/>
|
||||
</vector>
|
@ -0,0 +1,5 @@
|
||||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12.65,10C11.83,7.67 9.61,6 7,6c-3.31,0 -6,2.69 -6,6s2.69,6 6,6c2.61,0 4.83,-1.67 5.65,-4H17v4h4v-4h2v-4H12.65zM7,14c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2z"/>
|
||||
</vector>
|
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:padding="@dimen/keyline_first">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/color_primary"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@android:id/text1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="@dimen/keyline_first"
|
||||
android:paddingStart="@dimen/keyline_first"
|
||||
android:textAppearance="?android:attr/textAppearanceListItemSmall" />
|
||||
|
||||
</LinearLayout>
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="DarkBase" parent="Theme.AppCompat.NoActionBar">
|
||||
<style name="DarkOverride" parent="DarkBase">
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
</style>
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="LightBase" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<style name="LightOverride" parent="LightBase">
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
</style>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Amber" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/amber_500</item>
|
||||
<item name="colorPrimaryDark">@color/amber_700</item>
|
||||
<item name="colorAccent">@color/purple_a400</item>
|
||||
<item name="alertDialogTheme">@style/AmberDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="AmberDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/amber_500</item>
|
||||
<item name="colorPrimaryDark">@color/amber_700</item>
|
||||
<item name="colorAccent">@color/purple_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="DarkBase" parent="Theme.AppCompat.NoActionBar">
|
||||
|
||||
</style>
|
||||
|
||||
<style name="DarkOverride" parent="DarkBase">
|
||||
</style>
|
||||
|
||||
<style name="DialogBaseDark" parent="@style/Theme.AppCompat.Dialog">
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Blue" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/blue_500</item>
|
||||
<item name="colorPrimaryDark">@color/blue_700</item>
|
||||
<item name="colorAccent">@color/pink_a400</item>
|
||||
<item name="alertDialogTheme">@style/BlueDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="BlueDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/blue_500</item>
|
||||
<item name="colorPrimaryDark">@color/blue_700</item>
|
||||
<item name="colorAccent">@color/pink_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="BlueGrey" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/blue_grey_500</item>
|
||||
<item name="colorPrimaryDark">@color/blue_grey_700</item>
|
||||
<item name="colorAccent">@color/red_500</item>
|
||||
<item name="alertDialogTheme">@style/BlueGreyDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="BlueGreyDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/blue_grey_500</item>
|
||||
<item name="colorPrimaryDark">@color/blue_grey_700</item>
|
||||
<item name="colorAccent">@color/red_500</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Brown" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/brown_500</item>
|
||||
<item name="colorPrimaryDark">@color/brown_700</item>
|
||||
<item name="colorAccent">@color/red_a400</item>
|
||||
<item name="alertDialogTheme">@style/BrownDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="BrownDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/brown_500</item>
|
||||
<item name="colorPrimaryDark">@color/brown_700</item>
|
||||
<item name="colorAccent">@color/red_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Cyan" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/cyan_500</item>
|
||||
<item name="colorPrimaryDark">@color/cyan_700</item>
|
||||
<item name="colorAccent">@color/amber_a400</item>
|
||||
<item name="alertDialogTheme">@style/CyanDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="CyanDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/cyan_500</item>
|
||||
<item name="colorPrimaryDark">@color/cyan_700</item>
|
||||
<item name="colorAccent">@color/amber_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="DeepOrange" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/deep_orange_500</item>
|
||||
<item name="colorPrimaryDark">@color/deep_orange_700</item>
|
||||
<item name="colorAccent">@color/indigo_a400</item>
|
||||
<item name="alertDialogTheme">@style/DeepOrangeDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="DeepOrangeDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/deep_orange_500</item>
|
||||
<item name="colorPrimaryDark">@color/deep_orange_700</item>
|
||||
<item name="colorAccent">@color/indigo_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="DeepPurple" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/deep_purple_500</item>
|
||||
<item name="colorPrimaryDark">@color/deep_purple_700</item>
|
||||
<item name="colorAccent">@color/pink_a400</item>
|
||||
<item name="alertDialogTheme">@style/DeepPurpleDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="DeepPurpleDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/deep_purple_500</item>
|
||||
<item name="colorPrimaryDark">@color/deep_purple_700</item>
|
||||
<item name="colorAccent">@color/pink_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Green" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/green_500</item>
|
||||
<item name="colorPrimaryDark">@color/green_700</item>
|
||||
<item name="colorAccent">@color/pink_a400</item>
|
||||
<item name="alertDialogTheme">@style/GreenDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="GreenDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/green_500</item>
|
||||
<item name="colorPrimaryDark">@color/green_700</item>
|
||||
<item name="colorAccent">@color/pink_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Grey" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/grey_500</item>
|
||||
<item name="colorPrimaryDark">@color/grey_700</item>
|
||||
<item name="colorAccent">@color/amber_a400</item>
|
||||
<item name="alertDialogTheme">@style/GreyDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="GreyDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/grey_500</item>
|
||||
<item name="colorPrimaryDark">@color/grey_700</item>
|
||||
<item name="colorAccent">@color/amber_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Indigo" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/indigo_500</item>
|
||||
<item name="colorPrimaryDark">@color/indigo_700</item>
|
||||
<item name="colorAccent">@color/red_a400</item>
|
||||
<item name="alertDialogTheme">@style/IndigoDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="IndigoDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/indigo_500</item>
|
||||
<item name="colorPrimaryDark">@color/indigo_700</item>
|
||||
<item name="colorAccent">@color/red_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="LightBlue" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/light_blue_500</item>
|
||||
<item name="colorPrimaryDark">@color/light_blue_700</item>
|
||||
<item name="colorAccent">@color/pink_a400</item>
|
||||
<item name="alertDialogTheme">@style/LightBlueDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="LightBlueDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/light_blue_500</item>
|
||||
<item name="colorPrimaryDark">@color/light_blue_700</item>
|
||||
<item name="colorAccent">@color/pink_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="LightGreen" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/light_green_500</item>
|
||||
<item name="colorPrimaryDark">@color/light_green_700</item>
|
||||
<item name="colorAccent">@color/purple_a400</item>
|
||||
<item name="alertDialogTheme">@style/LightGreenDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="LightGreenDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/light_green_500</item>
|
||||
<item name="colorPrimaryDark">@color/light_green_700</item>
|
||||
<item name="colorAccent">@color/purple_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Lime" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/lime_500</item>
|
||||
<item name="colorPrimaryDark">@color/lime_700</item>
|
||||
<item name="colorAccent">@color/cyan_a400</item>
|
||||
<item name="alertDialogTheme">@style/LimeDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="LimeDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/lime_500</item>
|
||||
<item name="colorPrimaryDark">@color/lime_700</item>
|
||||
<item name="colorAccent">@color/cyan_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Orange" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/orange_500</item>
|
||||
<item name="colorPrimaryDark">@color/orange_700</item>
|
||||
<item name="colorAccent">@color/deep_purple_a400</item>
|
||||
<item name="alertDialogTheme">@style/OrangeDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="OrangeDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/orange_500</item>
|
||||
<item name="colorPrimaryDark">@color/orange_700</item>
|
||||
<item name="colorAccent">@color/deep_purple_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Pink" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/pink_500</item>
|
||||
<item name="colorPrimaryDark">@color/pink_700</item>
|
||||
<item name="colorAccent">@color/blue_a400</item>
|
||||
<item name="alertDialogTheme">@style/PinkDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="PinkDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/pink_500</item>
|
||||
<item name="colorPrimaryDark">@color/pink_700</item>
|
||||
<item name="colorAccent">@color/blue_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Purple" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/purple_500</item>
|
||||
<item name="colorPrimaryDark">@color/purple_700</item>
|
||||
<item name="colorAccent">@color/light_blue_a400</item>
|
||||
<item name="alertDialogTheme">@style/PurpleDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="PurpleDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/purple_500</item>
|
||||
<item name="colorPrimaryDark">@color/purple_700</item>
|
||||
<item name="colorAccent">@color/light_blue_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Red" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/red_500</item>
|
||||
<item name="colorPrimaryDark">@color/red_700</item>
|
||||
<item name="colorAccent">@color/blue_a400</item>
|
||||
<item name="alertDialogTheme">@style/RedDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="RedDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/red_500</item>
|
||||
<item name="colorPrimaryDark">@color/red_700</item>
|
||||
<item name="colorAccent">@color/blue_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Teal" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/teal_500</item>
|
||||
<item name="colorPrimaryDark">@color/teal_700</item>
|
||||
<item name="colorAccent">@color/purple_a400</item>
|
||||
<item name="alertDialogTheme">@style/TealDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="TealDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/teal_500</item>
|
||||
<item name="colorPrimaryDark">@color/teal_700</item>
|
||||
<item name="colorAccent">@color/purple_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="Yellow" parent="LightOverride">
|
||||
<item name="colorPrimary">@color/yellow_500</item>
|
||||
<item name="colorPrimaryDark">@color/yellow_700</item>
|
||||
<item name="colorAccent">@color/red_a400</item>
|
||||
<item name="alertDialogTheme">@style/YellowDialog</item>
|
||||
</style>
|
||||
|
||||
<style name="YellowDialog" parent="LightDialogBase">
|
||||
<item name="colorPrimary">@color/yellow_500</item>
|
||||
<item name="colorPrimaryDark">@color/yellow_700</item>
|
||||
<item name="colorAccent">@color/red_a400</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
Loading…
Reference in New Issue