diff --git a/api/src/main/java/com/todoroo/astrid/api/AstridApiConstants.java b/api/src/main/java/com/todoroo/astrid/api/AstridApiConstants.java index 6e8038532..d571fcaf1 100644 --- a/api/src/main/java/com/todoroo/astrid/api/AstridApiConstants.java +++ b/api/src/main/java/com/todoroo/astrid/api/AstridApiConstants.java @@ -147,16 +147,6 @@ public class AstridApiConstants { */ public static final String BROADCAST_SEND_SYNC_ACTIONS = API_PACKAGE + ".SEND_SYNC_ACTIONS"; - // --- Task Decorations API - - /** - * Action name for broadcast intent sending decorations back to Astrid - *
  • EXTRAS_ADDON your add-on identifier - *
  • EXTRAS_TASK_ID id of the task - *
  • EXTRAS_RESPONSE a {@link TaskDecoration} - */ - public static final String BROADCAST_SEND_DECORATIONS = API_PACKAGE + ".SEND_DECORATIONS"; - // --- Actions API /** diff --git a/api/src/main/java/com/todoroo/astrid/api/TaskDecoration.java b/api/src/main/java/com/todoroo/astrid/api/TaskDecoration.java deleted file mode 100644 index 7613f3ee1..000000000 --- a/api/src/main/java/com/todoroo/astrid/api/TaskDecoration.java +++ /dev/null @@ -1,100 +0,0 @@ -/** - * Copyright (c) 2012 Todoroo Inc - * - * See the file "LICENSE" for the full license governing this code. - */ -package com.todoroo.astrid.api; - -import android.os.Parcel; -import android.os.Parcelable; -import android.widget.RemoteViews; -import android.widget.RemoteViews.RemoteView; - -/** - * Represents a line of text displayed in the Task List - * - * @author Tim Su - * - */ -public final class TaskDecoration implements Parcelable { - - /** - * Place decoration between completion box and task title - */ - public static final int POSITION_LEFT = 0; - - /** - * Place decoration between task title and importance bar - */ - public static final int POSITION_RIGHT = 1; - - /** - * {@link RemoteView} decoration - */ - public RemoteViews decoration = null; - - /** - * Decoration position - */ - public int position = POSITION_LEFT; - - /** - * Decorated task background color. 0 is default - */ - public int color = 0; - - /** - * Creates a TaskDetail object - * @param color - * color to use for text. Use 0 for default color - */ - public TaskDecoration(RemoteViews decoration, int position, int color) { - this.decoration = decoration; - this.position = position; - this.color = color; - } - - // --- parcelable helpers - - /** - * {@inheritDoc} - */ - @Override - public int describeContents() { - return 0; - } - - /** - * {@inheritDoc} - */ - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeParcelable(decoration, 0); - dest.writeInt(position); - dest.writeInt(color); - } - - /** - * Parcelable creator - */ - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - /** - * {@inheritDoc} - */ - @Override - public TaskDecoration createFromParcel(Parcel source) { - return new TaskDecoration((RemoteViews)source.readParcelable( - RemoteViews.class.getClassLoader()), - source.readInt(), source.readInt()); - } - - /** - * {@inheritDoc} - */ - @Override - public TaskDecoration[] newArray(int size) { - return new TaskDecoration[size]; - } - }; - -} diff --git a/astrid/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/astrid/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 35a3ecb92..73069cb9a 100644 --- a/astrid/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/astrid/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -62,7 +62,6 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.api.TaskContextActionExposer; -import com.todoroo.astrid.api.TaskDecoration; import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.dao.TaskListMetadataDao; @@ -570,8 +569,6 @@ public class TaskListFragment extends ListFragment implements OnSortSelectedList getActivity().registerReceiver(detailReceiver, new IntentFilter(AstridApiConstants.BROADCAST_SEND_DETAILS)); - getActivity().registerReceiver(detailReceiver, - new IntentFilter(AstridApiConstants.BROADCAST_SEND_DECORATIONS)); getActivity().registerReceiver(refreshReceiver, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_REFRESH)); syncActionHelper.register(); @@ -691,12 +688,7 @@ public class TaskListFragment extends ListFragment implements OnSortSelectedList try { Bundle receivedExtras = intent.getExtras(); long taskId = receivedExtras.getLong(AstridApiConstants.EXTRAS_TASK_ID); - String addOn = receivedExtras.getString(AstridApiConstants.EXTRAS_ADDON); - - if (AstridApiConstants.BROADCAST_SEND_DECORATIONS.equals(intent.getAction())) { - TaskDecoration deco = receivedExtras.getParcelable(AstridApiConstants.EXTRAS_RESPONSE); - taskAdapter.decorationManager.addNew(taskId, addOn, deco); - } else if (AstridApiConstants.BROADCAST_SEND_DETAILS.equals(intent.getAction())) { + if (AstridApiConstants.BROADCAST_SEND_DETAILS.equals(intent.getAction())) { String detail = receivedExtras.getString(AstridApiConstants.EXTRAS_RESPONSE); taskAdapter.addDetails(taskId, detail); } diff --git a/astrid/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java b/astrid/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java index f44a5a00a..ae788290e 100644 --- a/astrid/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/astrid/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java @@ -13,7 +13,6 @@ import android.content.Intent; import android.content.res.Configuration; import android.content.res.Resources; import android.database.Cursor; -import android.graphics.Color; import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.text.Html; @@ -56,14 +55,12 @@ import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.TaskAction; -import com.todoroo.astrid.api.TaskDecoration; import com.todoroo.astrid.core.LinkActionExposer; import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskAttachment; import com.todoroo.astrid.files.FilesAction; import com.todoroo.astrid.files.FilesControlSet; -import com.todoroo.astrid.helper.TaskAdapterAddOnManager; import com.todoroo.astrid.notes.NotesAction; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.ThemeService; @@ -73,7 +70,6 @@ import com.todoroo.astrid.utility.Constants; import org.tasks.R; -import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -203,10 +199,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable { private final boolean titleOnlyLayout; protected final int minRowHeight; - // --- task detail and decoration soft caches - - public final DecorationManager decorationManager; - private final Map taskActionLoader = Collections.synchronizedMap(new HashMap()); /** @@ -244,8 +236,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable { startDetailThread(); - decorationManager = new DecorationManager(); - scaleAnimation = new ScaleAnimation(1.4f, 1.0f, 1.4f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); scaleAnimation.setDuration(100); @@ -844,7 +834,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable { */ public void flushCaches() { completedItems.clear(); - decorationManager.clearCache(); taskDetailLoader.clear(); startDetailThread(); } @@ -853,76 +842,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable { return completedItems; } - /** - * AddOnManager for TaskDecorations - * - * @author Tim Su - * - */ - public class DecorationManager extends TaskAdapterAddOnManager { - - public DecorationManager() { - super(fragment); - } - - @Override - protected void draw(ViewHolder viewHolder, long taskId, Collection decorations) { - if(decorations == null || viewHolder.task.getId() != taskId) { - return; - } - - reset(viewHolder); - if(decorations.size() == 0) { - return; - } - - - int i = 0; - boolean colorSet = false; - if(viewHolder.decorations == null || viewHolder.decorations.length != decorations.size()) { - viewHolder.decorations = new View[decorations.size()]; - } - for(TaskDecoration decoration : decorations) { - if(decoration.color != 0 && !colorSet) { - colorSet = true; - viewHolder.view.setBackgroundColor(decoration.color); - } - if(decoration.decoration != null) { - View view = decoration.decoration.apply(fragment.getActivity(), viewHolder.taskRow); - viewHolder.decorations[i] = view; - switch(decoration.position) { - case TaskDecoration.POSITION_LEFT: { - RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( - LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); - params.addRule(RelativeLayout.BELOW, R.id.completeBox); - view.setLayoutParams(params); - viewHolder.rowBody.addView(view); - break; - } - case TaskDecoration.POSITION_RIGHT: - viewHolder.taskRow.addView(view, viewHolder.taskRow.getChildCount()); - } - } - i++; - } - } - - private void reset(ViewHolder viewHolder) { - if(viewHolder.decorations != null) { - for(View view : viewHolder.decorations) { - viewHolder.rowBody.removeView(view); - viewHolder.taskRow.removeView(view); - } - viewHolder.decorations = null; - } - if(viewHolder.task.getId() == mostRecentlyMade) { - viewHolder.view.setBackgroundColor(Color.argb(30, 150, 150, 150)); - } else { - viewHolder.view.setBackgroundResource(android.R.drawable.list_selector_background); - } - } - } - /* ====================================================================== * ======================================================= event handlers * ====================================================================== */ diff --git a/astrid/src/main/java/com/todoroo/astrid/core/LinkActionExposer.java b/astrid/src/main/java/com/todoroo/astrid/core/LinkActionExposer.java index e49464967..c6437cd98 100644 --- a/astrid/src/main/java/com/todoroo/astrid/core/LinkActionExposer.java +++ b/astrid/src/main/java/com/todoroo/astrid/core/LinkActionExposer.java @@ -20,7 +20,6 @@ import android.text.util.Linkify; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.api.TaskAction; -import com.todoroo.astrid.api.TaskDecoration; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.files.FilesAction; import com.todoroo.astrid.notes.NotesAction; @@ -31,7 +30,7 @@ import java.util.HashMap; import java.util.List; /** - * Exposes {@link TaskDecoration} for phone numbers, emails, urls, etc + * Exposes {@link TaskAction} for phone numbers, emails, urls, etc * * @author Tim Su * diff --git a/astrid/src/main/java/com/todoroo/astrid/helper/TaskAdapterAddOnManager.java b/astrid/src/main/java/com/todoroo/astrid/helper/TaskAdapterAddOnManager.java deleted file mode 100644 index e90ed0f39..000000000 --- a/astrid/src/main/java/com/todoroo/astrid/helper/TaskAdapterAddOnManager.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * - */ -package com.todoroo.astrid.helper; - -import android.support.v4.app.ListFragment; -import android.widget.ListView; - -import com.todoroo.astrid.adapter.TaskAdapter.ViewHolder; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; - -abstract public class TaskAdapterAddOnManager { - - private final ListFragment fragment; - - protected TaskAdapterAddOnManager(ListFragment fragment) { - this.fragment = fragment; - } - - private final Map> cache = - Collections.synchronizedMap(new HashMap>(0)); - - // --- interface - - /** updates the given view */ - abstract protected void draw(ViewHolder viewHolder, long taskId, Collection list); - - /** on receive an intent */ - public void addNew(long taskId, String addOn, TYPE item) { - if(item == null) { - return; - } - - Collection cacheList = addIfNotExists(taskId, addOn, item); - if(cacheList != null) { - ListView listView = fragment.getListView(); - // update view if it is visible - int length = listView.getChildCount(); - for(int i = 0; i < length; i++) { - ViewHolder viewHolder = (ViewHolder) listView.getChildAt(i).getTag(); - if(viewHolder == null || viewHolder.task.getId() != taskId) { - continue; - } - draw(viewHolder, taskId, cacheList); - break; - } - } - } - - /** - * Clears the cache - */ - public void clearCache() { - cache.clear(); - } - - // --- internal goodies - - /** - * Adds an item to the cache if it doesn't exist - * @return iterator if item was added, null if it already existed - */ - protected synchronized Collection addIfNotExists(long taskId, String addOn, - TYPE item) { - LinkedHashMap list = cache.get(taskId); - if(list == null) { - return null; - } - if(list.containsValue(item)) { - return null; - } - list.put(addOn, item); - return get(taskId); - } - - /** - * Gets an item at the given index - */ - protected Collection get(long taskId) { - if(cache.get(taskId) == null) { - return null; - } - return cache.get(taskId).values(); - } - -} diff --git a/astrid/src/main/java/com/todoroo/astrid/timers/TimerDecorationExposer.java b/astrid/src/main/java/com/todoroo/astrid/timers/TimerDecorationExposer.java deleted file mode 100644 index 3ab3a03fd..000000000 --- a/astrid/src/main/java/com/todoroo/astrid/timers/TimerDecorationExposer.java +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Copyright (c) 2012 Todoroo Inc - * - * See the file "LICENSE" for the full license governing this code. - */ -package com.todoroo.astrid.timers; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Color; -import android.os.SystemClock; -import android.text.format.DateUtils; -import android.view.View; -import android.widget.RemoteViews; - -import com.todoroo.andlib.service.ContextManager; -import com.todoroo.andlib.utility.DateUtilities; -import com.todoroo.astrid.api.AstridApiConstants; -import com.todoroo.astrid.api.TaskDecoration; -import com.todoroo.astrid.data.Task; - -import org.tasks.R; - -/** - * Exposes {@link TaskDecoration} for timers - * - * @author Tim Su - * - */ -public class TimerDecorationExposer { - - private static final int TIMING_BG_COLOR = Color.argb(200, 220, 50, 0); - - public TaskDecoration expose(Task task) { - if(task == null || (task.getElapsedSeconds() == 0 && - task.getTimerStart() == 0)) { - return null; - } - - TaskDecoration decoration; - RemoteViews remoteViews = new RemoteViews(ContextManager.getContext().getPackageName(), - R.layout.timer_decoration); - decoration = new TaskDecoration(remoteViews, - TaskDecoration.POSITION_LEFT, 0); - - long elapsed = task.getElapsedSeconds() * 1000L; - if(task.getTimerStart() != 0) { - decoration.color = TIMING_BG_COLOR; - elapsed += DateUtilities.now() - task.getTimerStart(); - decoration.decoration.setChronometer(R.id.timer, SystemClock.elapsedRealtime() - - elapsed, null, true); - decoration.decoration.setViewVisibility(R.id.timer, View.VISIBLE); - decoration.decoration.setViewVisibility(R.id.label, View.GONE); - } else { - // if timer is not started, make the chronometer just a text label, - // since we don't want the time to be displayed relative to elapsed - String format = buildFormat(elapsed); - decoration.color = 0; - decoration.decoration.setTextViewText(R.id.label, format); - decoration.decoration.setViewVisibility(R.id.timer, View.GONE); - decoration.decoration.setViewVisibility(R.id.label, View.VISIBLE); - } - - return decoration; - } - - public void updateDecoration(Context context, Task task) { - TaskDecoration decoration = expose(task); - if(decoration == null) { - return; - } - - Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_DECORATIONS); - broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, TimerPlugin.IDENTIFIER); - broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, decoration); - broadcastIntent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, task.getId()); - context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ); - } - - private String buildFormat(long elapsed) { - return DateUtils.formatElapsedTime(elapsed / 1000L); - } -} diff --git a/astrid/src/main/java/com/todoroo/astrid/timers/TimerPlugin.java b/astrid/src/main/java/com/todoroo/astrid/timers/TimerPlugin.java index a9c179414..2b93dd9a8 100644 --- a/astrid/src/main/java/com/todoroo/astrid/timers/TimerPlugin.java +++ b/astrid/src/main/java/com/todoroo/astrid/timers/TimerPlugin.java @@ -69,7 +69,6 @@ public class TimerPlugin extends BroadcastReceiver { } } PluginServices.getTaskService().save(task); - new TimerDecorationExposer().updateDecoration(context, task); // update notification TimerPlugin.updateNotifications(context); diff --git a/astrid/src/main/res/drawable-hdpi/task_timer.png b/astrid/src/main/res/drawable-hdpi/task_timer.png deleted file mode 100644 index 28a2283f9..000000000 Binary files a/astrid/src/main/res/drawable-hdpi/task_timer.png and /dev/null differ diff --git a/astrid/src/main/res/drawable/task_timer.png b/astrid/src/main/res/drawable/task_timer.png deleted file mode 100644 index b903a5026..000000000 Binary files a/astrid/src/main/res/drawable/task_timer.png and /dev/null differ diff --git a/astrid/src/main/res/layout/timer_decoration.xml b/astrid/src/main/res/layout/timer_decoration.xml deleted file mode 100644 index de9d8f6b1..000000000 --- a/astrid/src/main/res/layout/timer_decoration.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - diff --git a/samples/filters/src/com/todoroo/astrid/api/AstridApiConstants.java b/samples/filters/src/com/todoroo/astrid/api/AstridApiConstants.java index d2c651113..33c4bfcba 100644 --- a/samples/filters/src/com/todoroo/astrid/api/AstridApiConstants.java +++ b/samples/filters/src/com/todoroo/astrid/api/AstridApiConstants.java @@ -140,14 +140,6 @@ public class AstridApiConstants { */ public static final String BROADCAST_REQUEST_DECORATIONS = PACKAGE + ".REQUEST_DECORATIONS"; - /** - * Action name for broadcast intent sending decorations back to Astrid - * @extra EXTRAS_ADDON your add-on identifier - * @extra EXTRAS_TASK_ID id of the task - * @extra EXTRAS_RESPONSE a {@link TaskDecoration} - */ - public static final String BROADCAST_SEND_DECORATIONS = PACKAGE + ".SEND_DECORATIONS"; - // --- Actions API /**