Merge branch 'master' of github.com:todoroo/astrid

pull/14/head
Tim Su 14 years ago
commit 8a7d57b429

@ -95,10 +95,22 @@
<echo message="Astrid: version ${manifest.version.code}, named ${manifest.version.name}" />
</target>
<target name="warnings">
<echo>====== context classes without setContext =====</echo>
<exec executable="sh">
<arg value="-c" />
<arg value="cd bin/source; grep -L '\(setContext\|DependencyInjectionService\)' `grep -l -R '^\(public\).*class .* \(Activity\|Service\|BroadcastReceiver\)' .` | grep -v '.*\(CriteriaExposer\|DetailExposer\|Plugin\).java$'" />
</exec>
<echo />
<echo>====== entry points without initializing Astrid DI =====</echo>
<exec executable="sh">
<arg value="-c" />
<arg value="cd bin/source; grep -L '\(AstridDependencyInjector\)' $(grep -l '@Autowired' `grep -l -R '^\(public\).*class .* \(Activity\|Service\|BroadcastReceiver\)' .`)" />
</exec>
</target>
<!-- post build: rename apk -->
<target name="release" depends="get-version, android_rules.release">
<target name="release" depends="get-version, warnings, android_rules.release">
<property name="out.release.package"
location="${out.absolute.dir}/${ant.project.name}-release.apk" />
<property name="out.final.package"

@ -11,6 +11,7 @@ import android.content.Intent;
import android.text.format.DateUtils;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.data.Metadata;
@ -25,6 +26,7 @@ public class AlarmDetailExposer extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
// get tags associated with this task
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1)

@ -7,6 +7,7 @@ import android.content.Context;
import android.content.Intent;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.data.Metadata;
@ -15,6 +16,7 @@ public class AlarmTaskRepeatListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1)
return;

@ -7,12 +7,14 @@ import android.view.View.OnClickListener;
import android.widget.Button;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager;
public class BackupActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ContextManager.setContext(this);
setContentView(R.layout.backup_activity);
setTitle(R.string.backup_BAc_title);

@ -10,6 +10,7 @@ import android.content.res.Resources;
import android.graphics.drawable.BitmapDrawable;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query;
@ -35,6 +36,7 @@ public final class CoreFilterExposer extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Resources r = context.getResources();
ContextManager.setContext(context);
// core filters
Filter inbox = buildInboxFilter(r);

@ -10,6 +10,7 @@ import android.text.TextUtils;
import android.util.Log;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task;
@ -19,6 +20,7 @@ public class GCalTaskCompleteListener extends BroadcastReceiver {
@SuppressWarnings("nls")
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1)
return;

@ -13,6 +13,7 @@ import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.service.AstridDependencyInjector;
/**
* Exposes Task Details for Google TAsks:
@ -29,6 +30,10 @@ public class GtasksDetailExposer extends BroadcastReceiver {
@Autowired private GtasksListService gtasksListService;
@Autowired private GtasksPreferenceService gtasksPreferenceService;
static {
AstridDependencyInjector.initialize();
}
public GtasksDetailExposer() {
DependencyInjectionService.getInstance().inject(this);
}

@ -31,6 +31,7 @@ import com.todoroo.astrid.data.MetadataApiDao.MetadataCriteria;
import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskApiDao.TaskCriteria;
import com.todoroo.astrid.service.AstridDependencyInjector;
/**
* Exposes filters based on lists
@ -43,6 +44,10 @@ public class GtasksFilterExposer extends BroadcastReceiver {
@Autowired private GtasksListService gtasksListService;
@Autowired private GtasksPreferenceService gtasksPreferenceService;
static {
AstridDependencyInjector.initialize();
}
private StoreObject[] lists;
public static Filter filterFromList(Context context, StoreObject list) {

@ -14,6 +14,7 @@ import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.SyncAction;
import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.sync.SyncBackgroundService;
/**
@ -24,6 +25,10 @@ public class GtasksSyncActionExposer extends BroadcastReceiver {
@Autowired private GtasksPreferenceService gtasksPreferenceService;
static {
AstridDependencyInjector.initialize();
}
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);

@ -47,6 +47,7 @@ import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.gtasks.GtasksBackgroundService;
import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.service.StatisticsService;
import com.todoroo.astrid.sync.SyncBackgroundService;
import com.todoroo.gtasks.GoogleConnectionManager;
@ -65,6 +66,10 @@ public class GtasksLoginActivity extends Activity {
// --- ui initialization
static {
AstridDependencyInjector.initialize();
}
public GtasksLoginActivity() {
super();
DependencyInjectionService.getInstance().inject(this);

@ -1,11 +1,15 @@
package com.todoroo.astrid.producteev;
import java.util.Set;
import java.util.TreeSet;
import android.content.BroadcastReceiver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.drawable.BitmapDrawable;
import com.timsu.astrid.R;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Join;
@ -23,9 +27,6 @@ import com.todoroo.astrid.producteev.sync.ProducteevDataService;
import com.todoroo.astrid.producteev.sync.ProducteevTask;
import com.todoroo.astrid.producteev.sync.ProducteevUser;
import java.util.Set;
import java.util.TreeSet;
public class ProducteevCustomFilterCriteriaExposer extends BroadcastReceiver {
private static final String IDENTIFIER_PRODUCTEEV_WORKSPACE = "producteev_workspace"; //$NON-NLS-1$
private static final String IDENTIFIER_PRODUCTEEV_ASSIGNEE = "producteev_assignee"; //$NON-NLS-1$

@ -9,6 +9,7 @@ import android.content.Intent;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.api.AstridApiConstants;
@ -30,6 +31,7 @@ public class ProducteevDetailExposer extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1)
return;

@ -11,6 +11,7 @@ import android.content.Context;
import android.content.Intent;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.astrid.api.AstridApiConstants;
@ -78,6 +79,7 @@ public class ProducteevFilterExposer extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
// if we aren't logged in, don't expose features
if(!ProducteevUtilities.INSTANCE.isLoggedIn())
return;

@ -9,6 +9,7 @@ import android.content.Context;
import android.content.Intent;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.SyncAction;
@ -20,6 +21,7 @@ public class ProducteevSyncActionExposer extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
// if we aren't logged in, don't expose sync action
if(!ProducteevUtilities.INSTANCE.isLoggedIn())
return;

@ -4,6 +4,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.service.AstridDependencyInjector;
/**
@ -23,6 +24,7 @@ public class ReminderStartupReceiver extends BroadcastReceiver {
@Override
/** Called when the system is started up */
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
startReminderSchedulingService(context);
}

@ -16,6 +16,7 @@ import com.google.ical.values.DateValue;
import com.google.ical.values.DateValueImpl;
import com.google.ical.values.Frequency;
import com.google.ical.values.RRule;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
@ -25,6 +26,7 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1)
return;

@ -8,14 +8,18 @@ import java.util.HashMap;
import java.util.TreeSet;
import android.app.Activity;
import android.content.*;
import android.content.BroadcastReceiver;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.Toast;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
@ -29,6 +33,7 @@ import com.todoroo.astrid.api.FilterListHeader;
import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.tags.TagService.Tag;
/**
@ -141,8 +146,11 @@ public class TagFilterExposer extends BroadcastReceiver {
protected String tag;
@Autowired
public TagService tagService;
@Autowired public TagService tagService;
static {
AstridDependencyInjector.initialize();
}
protected TagActivity() {
DependencyInjectionService.getInstance().inject(this);

@ -9,6 +9,7 @@ import android.content.Context;
import android.content.Intent;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.TaskAction;
import com.todoroo.astrid.api.TaskDecoration;
@ -27,6 +28,7 @@ public class TimerActionExposer extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1)
return;

@ -11,6 +11,7 @@ import android.content.res.Resources;
import android.graphics.drawable.BitmapDrawable;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.astrid.activity.FilterListActivity;
@ -30,7 +31,7 @@ public final class TimerFilterExposer extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
if(PluginServices.getTaskService().count(Query.select(Task.ID).
where(Task.TIMER_START.gt(0))) == 0)
return;

@ -8,6 +8,7 @@ import android.content.Intent;
import android.content.res.Resources;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.NotificationManager;
import com.todoroo.andlib.service.NotificationManager.AndroidNotificationManager;
import com.todoroo.andlib.sql.Query;
@ -27,6 +28,7 @@ public class TimerPlugin extends BroadcastReceiver {
@Override
@SuppressWarnings("nls")
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
Addon plugin = new Addon(IDENTIFIER, "Timer", "Todoroo",
"Lets you time how long it takes to complete tasks.");

@ -4,6 +4,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task;
@ -12,6 +13,7 @@ public class TimerTaskCompleteListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
if(taskId == -1)
return;

@ -23,6 +23,7 @@ import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.activity.TaskListActivity;
/**
@ -40,6 +41,7 @@ public class TaskList extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ContextManager.setContext(this);
launchTaskList(getIntent());
}

@ -70,6 +70,7 @@ public class ShortcutActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ContextManager.setContext(this);
launchTaskList(getIntent());
}

@ -180,10 +180,6 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
AstridDependencyInjector.initialize();
}
public TaskListActivity() {
DependencyInjectionService.getInstance().inject(this);
}
/**
* @return view to attach to the body of the task list. must contain two
* elements, a view with id android:id/empty and a list view with id
@ -199,6 +195,7 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
/** Called when loading up the activity */
@Override
protected void onCreate(Bundle savedInstanceState) {
DependencyInjectionService.getInstance().inject(this);
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);

@ -1,82 +0,0 @@
package com.todoroo.astrid.api;
import android.content.ComponentName;
import android.content.ContentValues;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import com.todoroo.andlib.sql.QueryTemplate;
public class FilterWithCustomIntent extends Filter {
public ComponentName customTaskList = null;
public Bundle customExtras = null;
protected FilterWithCustomIntent() {
super();
}
public FilterWithCustomIntent(String listingTitle, String title,
QueryTemplate sqlQuery, ContentValues valuesForNewTasks) {
super(listingTitle, title, sqlQuery, valuesForNewTasks);
}
public FilterWithCustomIntent(String listingTitle, String title,
String sqlQuery, ContentValues valuesForNewTasks) {
super(listingTitle, title, sqlQuery, valuesForNewTasks);
}
// --- parcelable
/**
* {@inheritDoc}
*/
@Override
public int describeContents() {
return 0;
}
/**
* {@inheritDoc}
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeParcelable(customTaskList, 0);
dest.writeParcelable(customExtras, 0);
}
@Override
public void readFromParcel(Parcel source) {
super.readFromParcel(source);
customTaskList = source.readParcelable(ComponentName.class.getClassLoader());
customExtras = source.readParcelable(Bundle.class.getClassLoader());
}
/**
* Parcelable Creator Object
*/
@SuppressWarnings("hiding")
public static final Parcelable.Creator<FilterWithCustomIntent> CREATOR = new Parcelable.Creator<FilterWithCustomIntent>() {
/**
* {@inheritDoc}
*/
public FilterWithCustomIntent createFromParcel(Parcel source) {
FilterWithCustomIntent item = new FilterWithCustomIntent();
item.readFromParcel(source);
return item;
}
/**
* {@inheritDoc}
*/
public FilterWithCustomIntent[] newArray(int size) {
return new FilterWithCustomIntent[size];
}
};
}

@ -16,8 +16,8 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.text.TextUtils;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.data.Property.StringProperty;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
@ -111,26 +111,17 @@ public class UpdateMessageService {
String date = update.optString("date", null);
String message = update.optString("message", null);
String plugin = update.optString("plugin", null);
String notPlugin = update.optString("notplugin", null);
if(message == null)
continue;
if(plugin != null) {
// handle internal plugin specially
if(PLUGIN_PDV.equals(plugin)) {
if(!ProducteevUtilities.INSTANCE.isLoggedIn())
continue;
}
else if(PLUGIN_GTASKS.equals(plugin)) {
if(!gtasksPreferenceService.isLoggedIn())
continue;
}
else if(PLUGIN_RMILK.equals(plugin)) {
if(!MilkUtilities.INSTANCE.isLoggedIn())
continue;
}
else if(!addOnService.isInstalled(plugin)) {
if(pluginConditionMatches(plugin))
continue;
}
if(notPlugin != null) {
if(!pluginConditionMatches(notPlugin))
continue;
}
}
if(messageAlreadySeen(date, message))
@ -144,6 +135,21 @@ public class UpdateMessageService {
return builder;
}
private boolean pluginConditionMatches(String plugin) {
// handle internal plugin specially
if(PLUGIN_PDV.equals(plugin)) {
return ProducteevUtilities.INSTANCE.isLoggedIn();
}
else if(PLUGIN_GTASKS.equals(plugin)) {
return gtasksPreferenceService.isLoggedIn();
}
else if(PLUGIN_RMILK.equals(plugin)) {
return !MilkUtilities.INSTANCE.isLoggedIn();
}
else
return addOnService.isInstalled(plugin);
}
private boolean messageAlreadySeen(String date, String message) {
if(date != null)
message = date + message;

@ -110,15 +110,17 @@ public final class UpgradeService {
});
} else {
// current message
newVersionString(changeLog, "3.6.0 (11/13/10)", new String[] {
"Astrid Power Pack is now launched to the Android Market. " +
"New Power Pack features include 4x2 and 4x4 widgets and voice " +
"task reminders and creation. Go to the add-ons page to find out more!",
"Fix for Google Tasks: due times got lost on sync, repeating tasks not repeated",
"Fix for task alarms not always firing if multiple set",
"Fix for various force closes",
});
upgrade3To3_6(context);
if(from < V3_6_0) {
newVersionString(changeLog, "3.6.0 (11/13/10)", new String[] {
"Astrid Power Pack is now launched to the Android Market. " +
"New Power Pack features include 4x2 and 4x4 widgets and voice " +
"task reminders and creation. Go to the add-ons page to find out more!",
"Fix for Google Tasks: due times got lost on sync, repeating tasks not repeated",
"Fix for task alarms not always firing if multiple set",
"Fix for various force closes",
});
upgrade3To3_6(context);
}
// old messages
if(from >= V3_0_0 && from < V3_5_0)

Loading…
Cancel
Save