diff --git a/api/src/com/todoroo/andlib/utility/AndroidUtilities.java b/api/src/com/todoroo/andlib/utility/AndroidUtilities.java
index b1d1a7f1d..04c9f89f9 100644
--- a/api/src/com/todoroo/andlib/utility/AndroidUtilities.java
+++ b/api/src/com/todoroo/andlib/utility/AndroidUtilities.java
@@ -737,14 +737,28 @@ public class AndroidUtilities {
}
}
+
+ /**
+ * Array of device names that should be considered tablets
+ */
+ private static final String[] THREE_PANE_DEVICES = new String[] {
+ "kindle", //$NON-NLS-1$
+ };
+
/**
* Returns true if the screen is large or xtra large
* @param context
* @return
*/
public static boolean isTabletSized(Context context) {
- int screenSize = context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK;
- return (screenSize >= Configuration.SCREENLAYOUT_SIZE_LARGE);
+ int size = context.getResources().getConfiguration().screenLayout
+ & Configuration.SCREENLAYOUT_SIZE_MASK;
+ if (size == Configuration.SCREENLAYOUT_SIZE_XLARGE) return true;
+ String model = android.os.Build.MODEL.toLowerCase();
+ for (String s : THREE_PANE_DEVICES) {
+ if (model.contains(s)) return true;
+ }
+ return false;
}
}
diff --git a/astrid/.classpath b/astrid/.classpath
index 91166000d..0e8784ce7 100644
--- a/astrid/.classpath
+++ b/astrid/.classpath
@@ -29,6 +29,6 @@
-
+
diff --git a/astrid/libs/crittercism_v2_0_1.jar b/astrid/libs/crittercism_v2_0_1.jar
deleted file mode 100644
index 5ff7f447b..000000000
Binary files a/astrid/libs/crittercism_v2_0_1.jar and /dev/null differ
diff --git a/astrid/libs/crittercism_v2_1_1.jar b/astrid/libs/crittercism_v2_1_1.jar
new file mode 100644
index 000000000..9fb7316d6
Binary files /dev/null and b/astrid/libs/crittercism_v2_1_1.jar differ
diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java
index f6e14e03f..dd8e18c5c 100644
--- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java
+++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java
@@ -54,6 +54,7 @@ import com.todoroo.astrid.helper.AsyncImageView;
import com.todoroo.astrid.helper.ProgressBarSyncResultCallback;
import com.todoroo.astrid.service.SyncV2Service;
import com.todoroo.astrid.service.TagDataService;
+import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.subtasks.SubtasksTagListFragment;
import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.tags.TagService.Tag;
@@ -156,11 +157,12 @@ public class TagViewFragment extends TaskListFragment {
}
@Override
- protected void addSyncRefreshMenuItem(Menu menu) {
+ protected void addSyncRefreshMenuItem(Menu menu, int themeFlags) {
if(actFmPreferenceService.isLoggedIn()) {
- addMenuItem(menu, R.string.actfm_TVA_menu_refresh, R.drawable.icn_menu_refresh, MENU_REFRESH_ID, false);
+ addMenuItem(menu, R.string.actfm_TVA_menu_refresh,
+ ThemeService.getDrawable(R.drawable.icn_menu_refresh, themeFlags), MENU_REFRESH_ID, false);
} else {
- super.addSyncRefreshMenuItem(menu);
+ super.addSyncRefreshMenuItem(menu, themeFlags);
}
}
diff --git a/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java
index 665bcccff..e104890f4 100644
--- a/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java
+++ b/astrid/plugin-src/com/todoroo/astrid/core/CoreFilterExposer.java
@@ -14,6 +14,7 @@ import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.sql.QueryTemplate;
+import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.activity.FilterListFragment;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.AstridFilterExposer;
@@ -67,8 +68,10 @@ public final class CoreFilterExposer extends BroadcastReceiver implements Astrid
Criterion.and(MetadataCriteria.withKey(TagService.KEY),
TagService.TAG.like("x_%", "x"))))))), //$NON-NLS-1$ //$NON-NLS-2$
null);
+ boolean isTablet = AndroidUtilities.isTabletSized(ContextManager.getContext());
+ int themeFlags = isTablet ? ThemeService.FLAG_FORCE_LIGHT : 0;
inbox.listingIcon = ((BitmapDrawable)r.getDrawable(
- ThemeService.getDrawable(R.drawable.filter_inbox))).getBitmap();
+ ThemeService.getDrawable(R.drawable.filter_inbox, themeFlags))).getBitmap();
return inbox;
}
diff --git a/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java
index c00dbd09c..f3d185392 100644
--- a/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java
+++ b/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterExposer.java
@@ -75,6 +75,9 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
}
private Filter[] buildSavedFilters(Context context, Resources r) {
+ boolean isTablet = AndroidUtilities.isTabletSized(context);
+ int themeFlags = isTablet ? ThemeService.FLAG_FORCE_LIGHT : 0;
+
StoreObjectDao dao = PluginServices.getStoreObjectDao();
TodorooCursor cursor = dao.query(Query.select(StoreObject.PROPERTIES).where(
StoreObject.TYPE.eq(SavedFilter.TYPE)).orderBy(Order.asc(SavedFilter.NAME)));
@@ -93,7 +96,7 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
Task.DUE_DATE.lte(PermaSql.VALUE_EOD))),
todayValues);
list[0].listingIcon = ((BitmapDrawable)r.getDrawable(
- ThemeService.getDrawable(R.drawable.filter_calendar))).getBitmap();
+ ThemeService.getDrawable(R.drawable.filter_calendar, themeFlags))).getBitmap();
list[1] = new Filter(r.getString(R.string.BFE_Recent),
r.getString(R.string.BFE_Recent),
@@ -102,7 +105,7 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
Order.desc(Task.MODIFICATION_DATE)).limit(15),
null);
list[1].listingIcon = ((BitmapDrawable)r.getDrawable(
- ThemeService.getDrawable(R.drawable.filter_pencil))).getBitmap();
+ ThemeService.getDrawable(R.drawable.filter_pencil, themeFlags))).getBitmap();
list[2] = getAssignedByMeFilter(r);
@@ -118,7 +121,7 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
list[i].contextMenuLabels = new String[] { context.getString(R.string.BFE_Saved_delete) };
list[i].contextMenuIntents = new Intent[] { deleteIntent };
list[i].listingIcon = ((BitmapDrawable)r.getDrawable(
- ThemeService.getDrawable(R.drawable.filter_sliders))).getBitmap();
+ ThemeService.getDrawable(R.drawable.filter_sliders, themeFlags))).getBitmap();
}
return list;
@@ -128,6 +131,8 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
}
public static Filter getAssignedByMeFilter(Resources r) {
+ boolean isTablet = AndroidUtilities.isTabletSized(ContextManager.getContext());
+ int themeFlags = isTablet ? ThemeService.FLAG_FORCE_LIGHT : 0;
Filter f = new Filter(r.getString(R.string.BFE_Assigned),
r.getString(R.string.BFE_Assigned),
new QueryTemplate().join(Join.left(Metadata.TABLE, Task.ID.eq(Metadata.TASK)))
@@ -137,7 +142,7 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
Criterion.and(Metadata.KEY.eq(TaskRabbitMetadata.METADATA_KEY), TaskRabbitMetadata.ID.gt(0))))),
null);
f.listingIcon = ((BitmapDrawable)r.getDrawable(
- ThemeService.getDrawable(R.drawable.filter_assigned))).getBitmap();
+ ThemeService.getDrawable(R.drawable.filter_assigned, themeFlags))).getBitmap();
return f;
}
diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksListFragment.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksListFragment.java
index a00a3d3bb..af8fa14f8 100644
--- a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksListFragment.java
+++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksListFragment.java
@@ -17,6 +17,7 @@ import com.todoroo.astrid.dao.StoreObjectDao;
import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.SyncV2Service;
+import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.subtasks.OrderedListFragmentHelper;
import com.todoroo.astrid.subtasks.SubtasksListFragment;
@@ -144,11 +145,12 @@ public class GtasksListFragment extends SubtasksListFragment {
}
@Override
- protected void addSyncRefreshMenuItem(Menu menu) {
+ protected void addSyncRefreshMenuItem(Menu menu, int themeFlags) {
if(gtasksPreferenceService.isLoggedIn()) {
- addMenuItem(menu, R.string.actfm_TVA_menu_refresh, R.drawable.icn_menu_refresh, MENU_REFRESH_ID, false);
+ addMenuItem(menu, R.string.actfm_TVA_menu_refresh,
+ ThemeService.getDrawable(R.drawable.icn_menu_refresh, themeFlags), MENU_REFRESH_ID, false);
} else {
- super.addSyncRefreshMenuItem(menu);
+ super.addSyncRefreshMenuItem(menu, themeFlags);
}
}
diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java
index e439178f9..5a14610b9 100644
--- a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java
+++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java
@@ -26,6 +26,7 @@ import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.QueryTemplate;
+import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.actfm.TagViewFragment;
@@ -169,6 +170,9 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
Context context = ContextManager.getContext();
Resources r = context.getResources();
+ boolean isTablet = AndroidUtilities.isTabletSized(context);
+ int themeFlags = isTablet ? ThemeService.FLAG_FORCE_LIGHT : 0;
+
// --- untagged
int untaggedLabel = gtasksPreferenceService.isLoggedIn() ?
R.string.tag_FEx_untagged_w_astrid : R.string.tag_FEx_untagged;
@@ -177,7 +181,7 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
TagService.untaggedTemplate(),
null);
untagged.listingIcon = ((BitmapDrawable)r.getDrawable(
- ThemeService.getDrawable(R.drawable.gl_lists))).getBitmap();
+ ThemeService.getDrawable(R.drawable.gl_lists, themeFlags))).getBitmap();
filters[0] = untagged;
for(int i = 0; i < tags.length; i++)
diff --git a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java
index 39b48986a..e8c9dcd2c 100644
--- a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java
+++ b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java
@@ -5,7 +5,6 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
@@ -55,13 +54,6 @@ public class AstridActivity extends FragmentActivity
TaskListFragment.OnTaskListItemClickedListener,
TaskEditFragment.OnTaskEditDetailsClickedListener {
- /**
- * Array of device names that we want to override the layout for
- */
- private static final String[] THREE_PANE_DEVICES = new String[] {
- "kindle", //$NON-NLS-1$
- };
-
public static final int LAYOUT_SINGLE = 0;
public static final int LAYOUT_DOUBLE = 1;
public static final int LAYOUT_TRIPLE = 2;
@@ -337,17 +329,6 @@ public class AstridActivity extends FragmentActivity
return fragmentLayout;
}
- public static boolean shouldUseThreePane(Context context) {
- int size = context.getResources().getConfiguration().screenLayout
- & Configuration.SCREENLAYOUT_SIZE_MASK;
- if (size == Configuration.SCREENLAYOUT_SIZE_XLARGE) return true;
- String model = android.os.Build.MODEL.toLowerCase();
- for (String s : THREE_PANE_DEVICES) {
- if (model.contains(s)) return true;
- }
- return false;
- }
-
private class ReminderReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, final Intent intent) {
diff --git a/astrid/src/com/todoroo/astrid/activity/FilterListFragment.java b/astrid/src/com/todoroo/astrid/activity/FilterListFragment.java
index 5838dbdc3..400e407c1 100644
--- a/astrid/src/com/todoroo/astrid/activity/FilterListFragment.java
+++ b/astrid/src/com/todoroo/astrid/activity/FilterListFragment.java
@@ -136,7 +136,7 @@ public class FilterListFragment extends ListFragment {
Bundle savedInstanceState) {
Activity activity = getActivity();
int layout;
- if (AstridActivity.shouldUseThreePane(activity))
+ if (AndroidUtilities.isTabletSized(activity))
layout = R.layout.filter_list_activity_3pane;
else
layout = R.layout.filter_list_activity;
diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java
index f40c0a308..c655f43ab 100644
--- a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java
+++ b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java
@@ -18,7 +18,7 @@ public class TaskEditActivity extends AstridActivity {
protected void onCreate(Bundle savedInstanceState) {
ThemeService.applyTheme(this);
super.onCreate(savedInstanceState);
- if (shouldUseThreePane(this))
+ if (AndroidUtilities.isTabletSized(this))
setContentView(R.layout.task_edit_wrapper_activity_3pane);
else
setContentView(R.layout.task_edit_wrapper_activity);
diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java
index 696624892..2502624bc 100644
--- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java
+++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java
@@ -121,7 +121,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
ThemeService.applyTheme(this);
super.onCreate(savedInstanceState);
- if (shouldUseThreePane(this))
+ if (AndroidUtilities.isTabletSized(this))
setContentView(R.layout.task_list_wrapper_activity_3pane);
else
setContentView(R.layout.task_list_wrapper_activity);
@@ -227,7 +227,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
private void createMainMenuPopover() {
int layout;
- if (shouldUseThreePane(this))
+ if (AndroidUtilities.isTabletSized(this))
layout = R.layout.main_menu_popover_tablet;
else
layout = R.layout.main_menu_popover;
diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java
index 056bd6a83..27584caf3 100644
--- a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java
+++ b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java
@@ -363,9 +363,9 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
contextMenuExtensionLoader.loadInNewThread(getActivity());
}
- protected void addSyncRefreshMenuItem(Menu menu) {
+ protected void addSyncRefreshMenuItem(Menu menu, int themeFlags) {
addMenuItem(menu, R.string.TLA_menu_sync,
- ThemeService.getDrawable(R.drawable.icn_menu_refresh), MENU_SYNC_ID, true);
+ ThemeService.getDrawable(R.drawable.icn_menu_refresh, themeFlags), MENU_SYNC_ID, true);
}
protected void addMenuItem(Menu menu, int title, int imageRes, int id, boolean showAsAction) {
@@ -395,26 +395,26 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
if (activity == null)
return;
-
+ boolean isTablet = AndroidUtilities.isTabletSized(activity);
activity.getMainMenuPopover().clear();
// --- sort
if (allowResorting()) {
addMenuItem(menu, R.string.TLA_menu_sort,
- ThemeService.getDrawable(R.drawable.icn_menu_sort_by_size), MENU_SORT_ID, true);
+ ThemeService.getDrawable(R.drawable.icn_menu_sort_by_size, isTablet ? ThemeService.FLAG_INVERT : 0), MENU_SORT_ID, true);
}
// --- sync
- addSyncRefreshMenuItem(menu);
+ addSyncRefreshMenuItem(menu, isTablet ? ThemeService.FLAG_INVERT : 0);
// --- new filter
addMenuItem(menu, R.string.FLA_new_filter,
- ThemeService.getDrawable(R.drawable.icn_menu_filters), MENU_NEW_FILTER_ID, true);
+ ThemeService.getDrawable(R.drawable.icn_menu_filters, isTablet ? ThemeService.FLAG_INVERT : 0), MENU_NEW_FILTER_ID, true);
// --- addons
if (!Constants.MARKET_DISABLED) {
addMenuItem(menu, R.string.TLA_menu_addons,
- ThemeService.getDrawable(R.drawable.icn_menu_plugins), MENU_ADDONS_ID, false);
+ ThemeService.getDrawable(R.drawable.icn_menu_plugins, isTablet ? ThemeService.FLAG_FORCE_DARK : 0), MENU_ADDONS_ID, false);
}
// ask about plug-ins
diff --git a/astrid/src/com/todoroo/astrid/service/ThemeService.java b/astrid/src/com/todoroo/astrid/service/ThemeService.java
index 0f7dc4d02..f0ca7a9d0 100644
--- a/astrid/src/com/todoroo/astrid/service/ThemeService.java
+++ b/astrid/src/com/todoroo/astrid/service/ThemeService.java
@@ -18,6 +18,10 @@ public class ThemeService {
public static final String THEME_TRANSPARENT = "transparent";
public static final String THEME_TRANSPARENT_WHITE = "transparent-white";
+ public static final int FLAG_FORCE_DARK = 1;
+ public static final int FLAG_FORCE_LIGHT = 2;
+ public static final int FLAG_INVERT = 3;
+
private static int currentTheme;
public static void applyTheme(Activity activity) {
@@ -69,7 +73,25 @@ public class ThemeService {
}
public static int getDrawable(int lightDrawable) {
+ return getDrawable(lightDrawable, 0);
+ }
+
+ public static int getDrawable(int lightDrawable, int alter) {
boolean darkTheme = currentTheme == R.style.Theme || currentTheme == R.style.Theme_Transparent;
+ switch(alter) {
+ case FLAG_FORCE_DARK:
+ darkTheme = true;
+ break;
+ case FLAG_FORCE_LIGHT:
+ darkTheme = false;
+ break;
+ case FLAG_INVERT:
+ darkTheme = !darkTheme;
+ break;
+ default:
+ break;
+ }
+
if(!darkTheme)
return lightDrawable;
diff --git a/astrid/src/com/todoroo/astrid/ui/MainMenuPopover.java b/astrid/src/com/todoroo/astrid/ui/MainMenuPopover.java
index 18dbf6121..04bedd7d2 100644
--- a/astrid/src/com/todoroo/astrid/ui/MainMenuPopover.java
+++ b/astrid/src/com/todoroo/astrid/ui/MainMenuPopover.java
@@ -13,7 +13,7 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import com.timsu.astrid.R;
-import com.todoroo.astrid.activity.AstridActivity;
+import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.ui.TouchInterceptingFrameLayout.InterceptTouchListener;
@@ -48,7 +48,7 @@ public class MainMenuPopover extends FragmentPopover implements InterceptTouchLi
TouchInterceptingFrameLayout rootLayout = (TouchInterceptingFrameLayout) getContentView();
rootLayout.setInterceptTouchListener(this);
- if (AstridActivity.shouldUseThreePane(context))
+ if (AndroidUtilities.isTabletSized(context))
rowLayout = R.layout.main_menu_row_tablet;
else
rowLayout = R.layout.main_menu_row;
@@ -85,18 +85,19 @@ public class MainMenuPopover extends FragmentPopover implements InterceptTouchLi
}
private void addFixedItems(boolean isTablet) {
+ int themeFlags = isTablet ? ThemeService.FLAG_FORCE_DARK : 0;
if (!isTablet)
addMenuItem(R.string.TLA_menu_lists,
- ThemeService.getDrawable(R.drawable.icn_menu_lists),
+ ThemeService.getDrawable(R.drawable.icn_menu_lists, themeFlags),
MAIN_MENU_ITEM_LISTS, null, topFixed); // Lists item
addMenuItem(R.string.TLA_menu_tutorial,
- ThemeService.getDrawable(R.drawable.icn_menu_tutorial),
+ ThemeService.getDrawable(R.drawable.icn_menu_tutorial, themeFlags),
MAIN_MENU_ITEM_TUTORIAL, null, bottomFixed); // Tutorial item
addMenuItem(R.string.TLA_menu_settings,
- ThemeService.getDrawable(R.drawable.icn_menu_settings),
+ ThemeService.getDrawable(R.drawable.icn_menu_settings, themeFlags),
MAIN_MENU_ITEM_SETTINGS, null, bottomFixed); // Settings item
addMenuItem(R.string.TLA_menu_support,
- ThemeService.getDrawable(R.drawable.icn_menu_support),
+ ThemeService.getDrawable(R.drawable.icn_menu_support, themeFlags),
MAIN_MENU_ITEM_SUPPORT, null, bottomFixed); // Support item
}