Fix for AST-239 - tag sort by active task, not total task size. Also, fix for AST-169 - color banding in gradient

pull/14/head
Tim Su 14 years ago
parent ed624af4cb
commit 960d0eb7ad

@ -29,6 +29,11 @@ abstract public class FilterListItem implements Parcelable {
@CheckForNull
public Bitmap listingIcon = null;
/**
* Text Color. <code>0</code> => default color
*/
public int color = 0;
/**
* Context Menu labels. The context menu will be displayed when users
* long-press on this filter list item.
@ -52,11 +57,10 @@ abstract public class FilterListItem implements Parcelable {
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(listingTitle);
dest.writeParcelable(listingIcon, 0);
dest.writeInt(color);
// write array lengths before arrays
dest.writeInt(contextMenuLabels.length);
dest.writeStringArray(contextMenuLabels);
dest.writeInt(contextMenuIntents.length);
dest.writeTypedArray(contextMenuIntents, 0);
}
@ -68,12 +72,9 @@ abstract public class FilterListItem implements Parcelable {
public void readFromParcel(Parcel source) {
listingTitle = source.readString();
listingIcon = source.readParcelable(Bitmap.class.getClassLoader());
color = source.readInt();
int length = source.readInt();
contextMenuLabels = new String[length];
source.readStringArray(contextMenuLabels);
length = source.readInt();
contextMenuIntents = new Intent[length];
source.readTypedArray(contextMenuIntents, Intent.CREATOR);
contextMenuLabels = source.createStringArray();
contextMenuIntents = source.createTypedArray(Intent.CREATOR);
}
}

@ -14,10 +14,10 @@ import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.widget.Button;
import android.widget.TextView;
@ -171,7 +171,8 @@ public class CustomFilterActivity extends ListActivity {
criteria.add(criterion);
// built in criteria: tags
Tag[] tags = TagService.getInstance().getGroupedTags(TagService.GROUPED_TAGS_BY_SIZE, Criterion.all);
Tag[] tags = TagService.getInstance().getGroupedTags(TagService.GROUPED_TAGS_BY_SIZE,
TaskCriteria.activeAndVisible());
String[] tagNames = new String[tags.length];
for(int i = 0; i < tags.length; i++)
tagNames[i] = tags[i].tag;

@ -21,10 +21,10 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.StoreObjectDao;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.StoreObjectDao;
import com.todoroo.astrid.dao.StoreObjectDao.StoreObjectCriteria;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.model.Metadata;
import com.todoroo.astrid.model.StoreObject;
@ -209,8 +209,6 @@ public final class ProducteevDataService {
private StoreObject[] dashboards = null;
private ArrayList colleagues;
/**
* Reads dashboards
*/

@ -3,11 +3,16 @@
*/
package com.todoroo.astrid.tags;
import java.util.Comparator;
import java.util.HashMap;
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.Color;
import android.graphics.drawable.BitmapDrawable;
import com.timsu.astrid.R;
@ -43,6 +48,8 @@ public class TagFilterExposer extends BroadcastReceiver {
Filter filter = new Filter(listTitle,
title, tagTemplate,
contentValues);
if(tag.count == 0)
filter.color = Color.GRAY;
// filters[0].contextMenuLabels = new String[] {
// "Rename Tag",
@ -65,8 +72,29 @@ public class TagFilterExposer extends BroadcastReceiver {
if(tags.length == 0)
return;
// sort tags by # of active tasks
Tag[] activeTags = tagService.getGroupedTags(TagService.GROUPED_TAGS_BY_SIZE, TaskCriteria.activeAndVisible());
HashMap<String, Integer> actives = new HashMap<String, Integer>();
for(Tag tag : activeTags)
actives.put(tag.tag, tag.count);
TreeSet<Tag> sortedTagSet = new TreeSet<Tag>(new Comparator<Tag>() {
@Override
public int compare(Tag a, Tag b) {
if(a.count == b.count)
return a.tag.toLowerCase().compareTo(b.tag.toLowerCase());
return b.count - a.count;
}
});
for(Tag tag : tags) {
if(!actives.containsKey(tag.tag))
tag.count = 0;
else
tag.count = actives.get(tag.tag);
sortedTagSet.add(tag);
}
// create filter list
Resources r = context.getResources();
FilterListItem[] list = new FilterListItem[3];
FilterListHeader tagsHeader = new FilterListHeader(context.getString(R.string.tag_FEx_header));
@ -80,13 +108,14 @@ public class TagFilterExposer extends BroadcastReceiver {
list[1] = untagged;
Filter[] filters = new Filter[tags.length];
for(int i = 0; i < tags.length; i++)
filters[i] = filterFromTag(context, tags[i], TaskCriteria.isActive());
Filter[] filters = new Filter[sortedTagSet.size()];
int index = 0;
for(Tag tag : sortedTagSet) {
filters[index++] = filterFromTag(context, tag, TaskCriteria.isActive());
}
FilterCategory tagsFilter = new FilterCategory(context.getString(R.string.tag_FEx_by_size), filters);
list[2] = tagsFilter;
// transmit filter list
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_FILTERS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, list);

@ -5,31 +5,33 @@ package com.todoroo.astrid.activity;
import android.app.AlertDialog;
import android.app.ExpandableListActivity;
import android.app.SearchManager;
import android.app.PendingIntent.CanceledException;
import android.app.SearchManager;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;
import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R;
@ -98,6 +100,10 @@ public class FilterListActivity extends ExpandableListActivity {
setTitle(R.string.FLA_title);
onNewIntent(getIntent());
// dithering
getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
}
/**

@ -27,14 +27,14 @@ import java.util.List;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.TabActivity;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TabActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.DialogInterface.OnCancelListener;
import android.content.res.Resources;
import android.os.Bundle;
import android.text.format.DateUtils;
@ -44,6 +44,7 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
@ -58,7 +59,6 @@ import android.widget.TabHost;
import android.widget.TimePicker;
import android.widget.Toast;
import android.widget.ToggleButton;
import android.widget.AdapterView.OnItemSelectedListener;
import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R;
@ -219,7 +219,7 @@ public final class TaskEditActivity extends TabActivity {
controls.add(new RepeatControlSet(this, extrasAddons));
LinearLayout addonsAddons = (LinearLayout) findViewById(R.id.tab_addons_addons);
AddOn producteevAddon = addOnService.getAddOn(AddOnService.PRODUCTEEV_PACKAGE, "Producteev");
AddOn producteevAddon = addOnService.getAddOn(AddOnService.PRODUCTEEV_PACKAGE, "Producteev"); //$NON-NLS-1$
if (addOnService.isInstalled(producteevAddon) && ProducteevUtilities.INSTANCE.isLoggedIn()) {
controls.add(new ProducteevControlSet(this, addonsAddons));
}

@ -18,6 +18,7 @@ import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.database.Cursor;
import android.graphics.PixelFormat;
import android.net.Uri;
import android.os.Bundle;
import android.text.Editable;
@ -32,6 +33,7 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
@ -361,7 +363,11 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
}
sortFlags = Preferences.getInt(SortSelectionActivity.PREF_SORT_FLAGS, 0);
sortSort= Preferences.getInt(SortSelectionActivity.PREF_SORT_SORT, 0);
sortSort = Preferences.getInt(SortSelectionActivity.PREF_SORT_SORT, 0);
// dithering
getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
}
private void setUpBackgroundJobs() {
@ -379,7 +385,6 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
loadTaskListContent(true);
}
});
System.err.println("timer trigger REFRESH");
}
}, 120000L, 120000L);
}

@ -332,6 +332,8 @@ public class FilterAdapter extends BaseExpandableListAdapter {
viewHolder.icon.setImageBitmap(filter.listingIcon);
viewHolder.name.setText(filter.listingTitle);
if(filter.color != 0)
viewHolder.name.setTextColor(filter.color);
// selection
if(selection == viewHolder.item) {

Loading…
Cancel
Save