Cleaning up themes

* Removed unused styles
* Removed theme flags
* Added resource resolver
pull/189/head
Alex Baker 10 years ago
parent e154656824
commit 2d4fe67e7f

@ -38,6 +38,7 @@ import org.json.JSONObject;
import org.tasks.R;
import org.tasks.injection.InjectingActionBarActivity;
import org.tasks.preferences.ActivityPreferences;
import org.tasks.preferences.ResourceResolver;
import javax.inject.Inject;
@ -62,6 +63,7 @@ public class TagSettingsActivity extends InjectingActionBarActivity {
@Inject TagDataService tagDataService;
@Inject TagMetadataDao tagMetadataDao;
@Inject ActivityPreferences preferences;
@Inject ResourceResolver resourceResolver;
private EditText tagName;
private Bitmap setBitmap;
@ -266,13 +268,13 @@ public class TagSettingsActivity extends InjectingActionBarActivity {
MenuItem item;
if (preferences.getBoolean(R.string.p_save_and_cancel, false)) {
item = menu.add(Menu.NONE, MENU_DISCARD_ID, 0, R.string.TEA_menu_discard);
item.setIcon(ThemeService.getDrawable(R.drawable.ic_action_cancel));
item.setIcon(resourceResolver.getResource(R.attr.ic_action_cancel));
setShowAsAction(item, MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
if (isDialog) {
item = menu.add(Menu.NONE, MENU_SAVE_ID, 0, R.string.TEA_menu_save);
item.setIcon(ThemeService.getDrawable(R.drawable.ic_action_save));
item.setIcon(resourceResolver.getResource(R.attr.ic_action_save));
setShowAsAction(item, MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
return super.onCreateOptionsMenu(menu);

@ -88,6 +88,7 @@ import org.tasks.R;
import org.tasks.injection.InjectingFragment;
import org.tasks.notifications.NotificationManager;
import org.tasks.preferences.ActivityPreferences;
import org.tasks.preferences.ResourceResolver;
import java.io.File;
import java.io.FileOutputStream;
@ -183,6 +184,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
@Inject GCalHelper gcalHelper;
@Inject ActivityPreferences preferences;
@Inject DateChangedAlerts dateChangedAlerts;
@Inject ResourceResolver resourceResolver;
// --- UI components
@ -948,7 +950,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
MenuItem item;
item = menu.add(Menu.NONE, MENU_ATTACH_ID, 0, R.string.premium_attach_file);
item.setIcon(ThemeService.getDrawable(R.drawable.ic_action_new_attachment));
item.setIcon(resourceResolver.getResource(R.attr.ic_action_new_attachment));
setShowAsAction(item, MenuItem.SHOW_AS_ACTION_ALWAYS);
@ -956,12 +958,12 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
// media recorder aac support requires api level 10
// approximately 1% of current installs are using api level 7-9
item = menu.add(Menu.NONE, MENU_RECORD_ID, 0, R.string.premium_record_audio);
item.setIcon(ThemeService.getDrawable(R.drawable.ic_action_mic));
item.setIcon(resourceResolver.getResource(R.attr.ic_action_mic));
setShowAsAction(item, MenuItem.SHOW_AS_ACTION_ALWAYS);
}
item = menu.add(Menu.NONE, MENU_DELETE_TASK_ID, 0, R.string.delete_task);
item.setIcon(ThemeService.getDrawable(R.drawable.ic_action_discard));
item.setIcon(ThemeService.getDrawable(resourceResolver.getResource(R.attr.ic_action_discard)));
setShowAsAction(item, MenuItem.SHOW_AS_ACTION_ALWAYS);
boolean useSaveAndCancel = preferences.getBoolean(R.string.p_save_and_cancel, false);
@ -969,13 +971,13 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
if (useSaveAndCancel || preferences.useTabletLayout()) {
if (useSaveAndCancel) {
item = menu.add(Menu.NONE, MENU_DISCARD_ID, 0, R.string.TEA_menu_discard);
item.setIcon(ThemeService.getDrawable(R.drawable.ic_action_cancel));
item.setIcon(resourceResolver.getResource(R.attr.ic_action_cancel));
setShowAsAction(item, MenuItem.SHOW_AS_ACTION_ALWAYS);
}
if (!(getActivity() instanceof TaskEditActivity)) {
item = menu.add(Menu.NONE, MENU_SAVE_ID, 0, R.string.TEA_menu_save);
item.setIcon(ThemeService.getDrawable(R.drawable.ic_action_save));
item.setIcon(resourceResolver.getResource(R.attr.ic_action_save));
setShowAsAction(item, MenuItem.SHOW_AS_ACTION_ALWAYS);
}
}

@ -88,14 +88,12 @@ public final class CoreFilterExposer extends InjectingBroadcastReceiver implemen
Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY),
TaskToTagMetadata.TAG_NAME.like("x_%", "x"))))))), //$NON-NLS-1$ //$NON-NLS-2$
null);
int themeFlags = ThemeService.getFilterThemeFlags();
inbox.listingIcon = ((BitmapDrawable)r.getDrawable(
ThemeService.getDrawable(R.drawable.filter_inbox, themeFlags))).getBitmap();
ThemeService.getDrawable(R.drawable.filter_inbox))).getBitmap();
return inbox;
}
public static Filter getTodayFilter(Resources r) {
int themeFlags = ThemeService.getFilterThemeFlags();
private static Filter getTodayFilter(Resources r) {
String todayTitle = AndroidUtilities.capitalize(r.getString(R.string.today));
ContentValues todayValues = new ContentValues();
todayValues.put(Task.DUE_DATE.name, PermaSql.VALUE_NOON);
@ -107,7 +105,7 @@ public final class CoreFilterExposer extends InjectingBroadcastReceiver implemen
Task.DUE_DATE.lte(PermaSql.VALUE_EOD))),
todayValues);
todayFilter.listingIcon = ((BitmapDrawable)r.getDrawable(
ThemeService.getDrawable(R.drawable.filter_calendar, themeFlags))).getBitmap();
ThemeService.getDrawable(R.drawable.filter_calendar))).getBitmap();
return todayFilter;
}

@ -73,8 +73,6 @@ public final class CustomFilterExposer extends InjectingBroadcastReceiver implem
}
private Filter[] buildSavedFilters(Context context, Resources r) {
int themeFlags = ThemeService.getFilterThemeFlags();
TodorooCursor<StoreObject> cursor = storeObjectDao.query(Query.select(StoreObject.PROPERTIES).where(
StoreObject.TYPE.eq(SavedFilter.TYPE)).orderBy(Order.asc(SavedFilter.NAME)));
try {
@ -89,7 +87,7 @@ public final class CustomFilterExposer extends InjectingBroadcastReceiver implem
Order.desc(Task.MODIFICATION_DATE)).limit(15),
null);
recent.listingIcon = ((BitmapDrawable)r.getDrawable(
ThemeService.getDrawable(R.drawable.filter_pencil, themeFlags))).getBitmap();
ThemeService.getDrawable(R.drawable.filter_pencil))).getBitmap();
list.add(recent);
}
@ -106,7 +104,7 @@ public final class CustomFilterExposer extends InjectingBroadcastReceiver implem
f.contextMenuLabels = new String[] { context.getString(R.string.BFE_Saved_delete) };
f.contextMenuIntents = new Intent[] { deleteIntent };
f.listingIcon = ((BitmapDrawable)r.getDrawable(
ThemeService.getDrawable(R.drawable.filter_sliders, themeFlags))).getBitmap();
ThemeService.getDrawable(R.drawable.filter_sliders))).getBitmap();
list.add(f);
}
}

@ -8,7 +8,6 @@ package com.todoroo.astrid.service;
import android.app.Activity;
import android.graphics.PixelFormat;
import android.util.Log;
import android.view.WindowManager;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.Preferences;
@ -20,18 +19,10 @@ public class ThemeService {
public static final String THEME_WHITE = "white";
public static final String THEME_BLACK = "black";
public static final int FLAG_FORCE_DARK = 1;
public static final int FLAG_INVERT = 3;
// Widget config activities set this flag since they theme differently than the normal
// filter list. In other cases this should be false
private static boolean forceFilterInvert = false;
public static void applyTheme(Activity activity) {
int currentTheme = getTheme();
activity.setTheme(currentTheme);
activity.getWindow().setFormat(PixelFormat.RGBA_8888);
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
}
private static int getTheme() {
@ -90,52 +81,14 @@ public class ThemeService {
}
public static int getDrawable(int lightDrawable) {
return getDrawable(lightDrawable, 0);
}
/**
* Only widget config activities should call this (see note on the flag above)
*/
public static void setForceFilterInvert(boolean forceInvert) {
forceFilterInvert = forceInvert;
}
public static int getFilterThemeFlags() {
if (forceFilterInvert) {
return ThemeService.FLAG_INVERT;
}
return 0;
}
public static int getDrawable(int lightDrawable, int alter) {
int theme = getTheme();
boolean darkTheme = theme == R.style.Tasks;
switch(alter) {
case FLAG_FORCE_DARK:
darkTheme = true;
break;
case FLAG_INVERT:
darkTheme = !darkTheme;
break;
default:
break;
}
if(!darkTheme) {
return lightDrawable;
}
switch(lightDrawable) {
case R.drawable.ic_action_mic:
return R.drawable.ic_action_mic_light;
case R.drawable.ic_action_save:
return R.drawable.ic_action_save_light;
case R.drawable.ic_action_discard:
return R.drawable.ic_action_discard_light;
case R.drawable.ic_action_cancel:
return R.drawable.ic_action_cancel_light;
case R.drawable.ic_action_new_attachment:
return R.drawable.ic_action_new_attachment_light;
case R.drawable.filter_calendar:
return R.drawable.filter_calendar_dark;
case R.drawable.filter_inbox:

@ -146,8 +146,6 @@ public class TagFilterExposer extends InjectingBroadcastReceiver implements Astr
Resources r = context.getResources();
int themeFlags = ThemeService.getFilterThemeFlags();
// --- untagged
if (shouldAddUntagged) {
Filter untagged = new Filter(r.getString(R.string.tag_FEx_untagged),
@ -155,7 +153,7 @@ public class TagFilterExposer extends InjectingBroadcastReceiver implements Astr
tagService.untaggedTemplate(),
null);
untagged.listingIcon = ((BitmapDrawable)r.getDrawable(
ThemeService.getDrawable(R.drawable.gl_lists, themeFlags))).getBitmap();
ThemeService.getDrawable(R.drawable.gl_lists))).getBitmap();
filters.add(untagged);
}

@ -65,7 +65,6 @@ public class WidgetConfigActivity extends InjectingListActivity {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
ThemeService.applyTheme(this);
ThemeService.setForceFilterInvert(true);
// Set the result to CANCELED. This will cause the widget host to cancel
// out of the widget placement if they press the back button.
@ -136,12 +135,6 @@ public class WidgetConfigActivity extends InjectingListActivity {
adapter.unregisterRecevier();
}
@Override
protected void onStop() {
super.onStop();
ThemeService.setForceFilterInvert(false);
}
private void saveConfiguration(FilterListItem filterListItem){
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

@ -98,4 +98,10 @@ public class ActivityModule {
public Context getActivityContext() {
return activity;
}
@Singleton
@Provides
public Activity getActivity() {
return activity;
}
}

@ -68,4 +68,10 @@ public class FragmentModule {
public Context getContext() {
return activity;
}
@Singleton
@Provides
public Activity getActivity() {
return activity;
}
}

@ -0,0 +1,24 @@
package org.tasks.preferences;
import android.app.Activity;
import android.util.TypedValue;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class ResourceResolver {
private final Activity activity;
@Inject
public ResourceResolver(Activity activity) {
this.activity = activity;
}
public int getResource(int attr) {
TypedValue typedValue = new TypedValue();
activity.getTheme().resolveAttribute(attr, typedValue, true);
return typedValue.resourceId;
}
}

@ -27,6 +27,10 @@
<attr name="asQuickaddBackgroundColor" format="color" />
<attr name="asFilterSelectedIcon" format="reference"/>
<attr name="asTaskRowSelector" format="reference" />
<attr name="ic_action_new_attachment" format="reference"/>
<attr name="ic_action_discard" format="reference"/>
<attr name="ic_action_save" format="reference"/>
<attr name="ic_action_cancel" format="reference"/>
<attr name="ic_action_camera" format="reference"/>
<attr name="ic_action_new" format="reference"/>
<attr name="ic_action_mic" format="reference" />

@ -30,6 +30,10 @@
<item name="asTaskRowSelector">@drawable/task_row_bg_dark</item>
<item name="asHeaderTextColor">?attr/asThemeTextColor</item>
<item name="asHeaderTextColorInverse">?attr/asAbBackgroundColor</item>
<item name="ic_action_new_attachment">@drawable/ic_action_new_attachment_light</item>
<item name="ic_action_discard">@drawable/ic_action_discard_light</item>
<item name="ic_action_save">@drawable/ic_action_save_light</item>
<item name="ic_action_cancel">@drawable/ic_action_cancel_light</item>
<item name="ic_action_camera">@drawable/ic_action_camera_light</item>
<item name="ic_action_mic">@drawable/ic_action_mic_light</item>
<item name="ic_action_new">@drawable/ic_action_new_light</item>
@ -73,6 +77,10 @@
<item name="asTaskRowSelector">@drawable/task_row_bg_white</item>
<item name="asThemeTextColor">@color/dark_blue_theme_color</item>
<item name="asAbBackgroundColor">#e9e9e9</item>
<item name="ic_action_new_attachment">@drawable/ic_action_new_attachment</item>
<item name="ic_action_discard">@drawable/ic_action_discard</item>
<item name="ic_action_save">@drawable/ic_action_save</item>
<item name="ic_action_cancel">@drawable/ic_action_cancel</item>
<item name="ic_action_camera">@drawable/ic_action_camera</item>
<item name="ic_action_mic">@drawable/ic_action_mic</item>
<item name="ic_action_new">@drawable/ic_action_new</item>
@ -186,9 +194,6 @@
<item name="android:background">?android:attr/listDivider</item>
</style>
<style name="FLA_Separator" parent="TEA_Separator">
</style>
<style name="TextAppearance" parent="android:TextAppearance">
<item name="android:textColor">?attr/asTextColor</item>
</style>
@ -199,17 +204,6 @@
<item name="android:textStyle">bold</item> -->
</style>
<style name="TextAppearance.ActionBar_ListsHeader">
<item name="android:background">@android:color/transparent</item>
<item name="android:textColor">?attr/asHeaderTextColor</item>
<item name="android:textSize">20dip</item>
<item name="android:textStyle">bold</item>
</style>
<style name="TextAppearance.ActionBar_ListsHeader.Selected">
<item name="android:textColor">?attr/asHeaderTextColorInverse</item>
</style>
<!--================================================== Custom Dialogs == -->
<style name="DialogTitle">
@ -234,12 +228,6 @@
<item name="android:gravity">center</item>
</style>
<style name="TextAppearance.TLA_Header">
<item name="android:textSize">18sp</item>
<item name="android:gravity">center</item>
<item name="android:textColor">#ffffff</item>
</style>
<style name="TextAppearance.TLA_Reminder">
<item name="android:textSize">16sp</item>
<item name="android:textColor">#000000</item>
@ -263,42 +251,13 @@
<item name="android:background">?attr/asEditRowBackground</item>
</style>
<style name="EditRowImage">
<item name="android:layout_width">25dip</item>
<item name="android:layout_height">25dip</item>
<item name="android:layout_marginRight">8dip</item>
<item name="android:scaleType">fitCenter</item>
</style>
<style name="TextAppearance.EditRowDisplay">
<item name="android:textColor">?attr/asThemeTextColor</item>
</style>
<style name="TextAppearance.TEA_action">
<item name="android:textSize">16sp</item>
<item name="android:textColor">?attr/asThemeTextColor</item>
</style>
<style name="TextAppearance.GEN_EditLabel.DLG_EditLabel">
</style>
<style name="TextAppearance.TEA_assigned">
<item name="android:textSize">18sp</item>
</style>
<style name="Tasks.WhenDialog">
<item name="android:windowAnimationStyle">@style/TEA_WhenDialog_Anim</item>
</style>
<style name="Tasks.Light.WhenDialog">
<item name="android:windowAnimationStyle">@style/TEA_WhenDialog_Anim</item>
</style>
<style name="TEA_WhenDialog_Anim">
<item name="android:windowEnterAnimation">@anim/slide_left_in</item>
<item name="android:windowExitAnimation">@anim/slide_right_out</item>
</style>
<style name="TEA_Dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowTitleStyle">@style/TEA_DialogWindowTitle</item>
@ -340,13 +299,6 @@
<item name="android:textColor">?attr/asTextColor</item>
</style>
<style name="TEA_list_header">
<item name="android:textColor">?attr/asTextColor</item>
<item name="android:textSize">18sp</item>
<item name="android:textStyle">bold</item>
<item name="android:background">#aaaaaaaa</item>
</style>
<!-- ==================================================== TaskAdapter == -->
<style name="TextAppearance.TAd_ItemTitle">
@ -357,11 +309,6 @@
<item name="android:textColor">#ff555555</item>
</style>
<style name="TextAppearance.TAd_ItemTitle_Deleted" parent="TextAppearance.TAd_ItemTitle" />
<style name="TextAppearance.TAd_ItemTitle_Overdue" parent="TextAppearance.TAd_ItemTitle">
</style>
<style name="TextAppearance.TAd_ItemDetails">
<item name="android:textColor">?attr/asDetailsColor</item>
<item name="android:textColorLink">#ff88aaff</item>
@ -393,15 +340,6 @@
<item name="android:textColor">?attr/asFilterHeaderColor</item>
</style>
<!-- ========================================================= Tag Settings == -->
<style name="DeleteTag" >
<item name="android:textColor">@android:color/white</item>
<item name="android:textStyle">bold</item>
<item name="android:background">#d90000</item>
<item name="android:textSize">16sp</item>
</style>
<!-- ========================================================= Widget == -->
<style name="TextAppearance.Widget">
@ -411,11 +349,6 @@
<!-- ========================================================= Premium == -->
<style name="TextAppearance.Premium_Billing">
<item name="android:textSize">14dip</item>
<item name="android:textColor">@android:color/black</item>
</style>
<style name="TextAppearance.Medium">
<item name="android:textSize">18sp</item>
</style>

Loading…
Cancel
Save