From 095d95d97fd3b39510be9a89292ce6051bc76121 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Sun, 18 Jul 2010 05:09:42 -0700 Subject: [PATCH] Minor bug fixes - to content values from shortcut, improved the filter tags images to not be fuzzy, made the filters page look better on dpi=160 screens, etc --- .../andlib/utility/AndroidUtilities.java | 2 +- astrid/default.properties | 2 +- .../todoroo/astrid/gcal/GCalControlSet.java | 13 +++++++++++-- .../astrid/gcal/GCalTaskCompleteListener.java | 16 ++++++++++------ astrid/res/drawable/filter_tags1.png | Bin 586 -> 726 bytes astrid/res/drawable/filter_tags2.png | Bin 599 -> 738 bytes astrid/res/drawable/filter_untagged.png | Bin 695 -> 717 bytes astrid/res/values/styles-3.0.xml | 5 ++--- .../astrid/activity/FilterListActivity.java | 16 +++++++++++----- .../todoroo/astrid/adapter/FilterAdapter.java | 18 +++++++++++------- 10 files changed, 47 insertions(+), 25 deletions(-) diff --git a/astrid/common-src/com/todoroo/andlib/utility/AndroidUtilities.java b/astrid/common-src/com/todoroo/andlib/utility/AndroidUtilities.java index 894f87467..e1dcc9b9c 100644 --- a/astrid/common-src/com/todoroo/andlib/utility/AndroidUtilities.java +++ b/astrid/common-src/com/todoroo/andlib/utility/AndroidUtilities.java @@ -189,7 +189,7 @@ public class AndroidUtilities { if(string == null) return null; - String[] pairs = string.split(","); + String[] pairs = string.split(" "); ContentValues result = new ContentValues(); for(String item : pairs) { String[] keyValue = item.split("="); diff --git a/astrid/default.properties b/astrid/default.properties index c5d5335ee..08ad68f11 100644 --- a/astrid/default.properties +++ b/astrid/default.properties @@ -10,5 +10,5 @@ # Indicates whether an apk should be generated for each density. split.density=false # Project target. -target=android-8 +target=android-4 apk-configurations= diff --git a/astrid/plugin-src/com/todoroo/astrid/gcal/GCalControlSet.java b/astrid/plugin-src/com/todoroo/astrid/gcal/GCalControlSet.java index 4b1b2c9c3..b0c691bd7 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gcal/GCalControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/gcal/GCalControlSet.java @@ -21,7 +21,9 @@ import android.widget.CompoundButton.OnCheckedChangeListener; import com.flurry.android.FlurryAgent; import com.timsu.astrid.R; import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.ExceptionService; +import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.activity.TaskEditActivity.TaskEditControlSet; import com.todoroo.astrid.gcal.Calendars.CalendarResult; import com.todoroo.astrid.model.Task; @@ -35,7 +37,7 @@ import com.todoroo.astrid.model.Task; public class GCalControlSet implements TaskEditControlSet { /** If task has no estimated time, how early to set a task in calendar (seconds)*/ - private static final int DEFAULT_CAL_TIME = 3600; + private static final long DEFAULT_CAL_TIME = DateUtilities.ONE_HOUR; // --- instance variables @@ -53,6 +55,8 @@ public class GCalControlSet implements TaskEditControlSet { private final Button viewCalendarEvent; public GCalControlSet(final Activity activity, ViewGroup parent) { + DependencyInjectionService.getInstance().inject(this); + this.activity = activity; LayoutInflater.from(activity).inflate(R.layout.gcal_control, parent, true); @@ -65,6 +69,7 @@ public class GCalControlSet implements TaskEditControlSet { android.R.layout.simple_spinner_item, calendars.calendars); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); calendarSelector.setAdapter(adapter); + calendarSelector.setSelection(calendars.defaultIndex); addToCalendar.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override @@ -163,7 +168,7 @@ public class GCalControlSet implements TaskEditControlSet { long dueDate = task.getValue(Task.DUE_DATE); if(task.hasDueDate()) { if(task.hasDueTime()) { - int estimatedTime = task.getValue(Task.ESTIMATED_SECONDS); + long estimatedTime = task.getValue(Task.ESTIMATED_SECONDS); if(estimatedTime <= 0) estimatedTime = DEFAULT_CAL_TIME; values.put("dtstart", dueDate - estimatedTime); @@ -173,6 +178,10 @@ public class GCalControlSet implements TaskEditControlSet { values.put("dtend", dueDate); values.put("allDay", "1"); } + } else { + values.put("dtstart", DateUtilities.now()); + values.put("dtend", DateUtilities.now()); + values.put("allDay", "1"); } } } \ No newline at end of file diff --git a/astrid/plugin-src/com/todoroo/astrid/gcal/GCalTaskCompleteListener.java b/astrid/plugin-src/com/todoroo/astrid/gcal/GCalTaskCompleteListener.java index 685598f0c..a9d8b6199 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gcal/GCalTaskCompleteListener.java +++ b/astrid/plugin-src/com/todoroo/astrid/gcal/GCalTaskCompleteListener.java @@ -35,12 +35,16 @@ public class GCalTaskCompleteListener extends BroadcastReceiver { String calendarUri = task.getValue(Task.CALENDAR_URI); if(!TextUtils.isEmpty(calendarUri)) { - // change title of calendar event - ContentResolver cr = context.getContentResolver(); - ContentValues values = new ContentValues(); - values.put("title", context.getString(R.string.gcal_completed_title, - task.getValue(Task.TITLE))); - cr.update(Uri.parse(calendarUri), values, null, null); + try { + // change title of calendar event + ContentResolver cr = context.getContentResolver(); + ContentValues values = new ContentValues(); + values.put("title", context.getString(R.string.gcal_completed_title, + task.getValue(Task.TITLE))); + cr.update(Uri.parse(calendarUri), values, null, null); + } catch (Exception e) { + // do nothing. + } } } diff --git a/astrid/res/drawable/filter_tags1.png b/astrid/res/drawable/filter_tags1.png index 454a59f30ca04916c30b5da70821b236df7dd934..82f360e07507619a2963965591b96b4374b709b7 100644 GIT binary patch literal 726 zcmV;{0xA88P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igY` z3pxXbw6@Ox00LG?L_t(I%k9L|Lk7&fRA8qY>x~P_r%9Jksz=89CF7%`3wq0)TDXOiWC;EX#UdtyU2c{CLnM_`a8|NKGFc>5d2y{1_&0u%q8!Gi0nso%l z{Rhtw5z6JVwYIj_7l}mdPCBlgoSd|~H|nRTtyj2i-Ntp-i*}esa&ZO*2JrcO7=~f3 ztgM)wz>z|sP&+<8M%Q(eW5JIGxHQlV=(*R%hlYj-1Oga_VJ$5!nU}&-Q&aCmWG0`_ z*KFHH_dPFbr#9VZpo*1_+14TOu-(%jIg8Wubc> zq8>+)>gnI^^==x68Bl_zX=s{;i1b`|^UfxjOoo+GiII^Jx5wk5^<@`6#L$f{8eMnL zp1$Cq^oe4zNTpI4j7FpT9l-$ccswj3iP6zfx7X{X^*M_x{}wI$lET3u#bOc1aRz5+ zXZJ6CE6&U6>S|a-5@TayZol6TK%r1zZ*PxErE)IX5e%@rygaRxS|1-Dch~Fn_VzDA zJB9%k7Z;~RWZms{yB)_FoSU25|8H;X{QUfMEEWsh{5Dt0Pdm>?rYYm{!ci%zG5cDs#MtA%E>iAJM=dcBTXt#$=Kxm1c}S>T)> z)oeDCkaD?v5u%VY38vGjbe>Em9)x-#1qy}2S%^ZB=`y)dqgt)jH=7L{$B}&kmP#dL zv)PjngPi@y?F z?msb!MgKs27C;q`$Nl1^87)}9-#;n72%w5aqyBI>%t#yv1bin~`G3EwaPPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igY` z3pq3tBtQcI00Lr3L_t(I%k95OSPzKf-Aj15pq}W7k9IE>fY( zuKJt0=pWEh6cpx~2q`VYV3{d0kEC0~Ib+t`{ITKp>7p1yDpR`j0}njko7eLLp6>&< z`5VvqVq;@NDWwn*lv13Zi%9$6;Glb>Ro2(n)!EtEKO>jRskOB=l}@LvMlJ1pp_Bq3 zpU;!YWZ2)|2f*+5V_6out~<-i%ht7F5dpw;T?PgQJdWdhIyyQ+LguV8ScYM6;8sb$Ef5NY@cDe`y6&V>sVi~gqN@mnLIi`srdq8Qs+8c(t31^c zg;MY+{s0jnm&-YcM529UWW;S`$H&EDvA+Am17YIjK6mdKSpGYF`B>t8vOrf?7oDA* z7>41@&COYjz$4jg_P9_epzAtCw@U3);n6(khKJVs-a6jh-AynU#4rqJW@g5^5*`{F zdM6_B?d|Pj*L8W=+sfl-J`R6Ysa2(pfBx``m4r)APY>a67{f4}si`UJQWzi>i>-)A zd~0j#*l`>p(H7!QeUuLV;2sUUO&Xh-A|eV+)6g^x5ox~k<(*F|m5M2)lF?|??C9vg z-aI7n`UhUGPIC)9c^)MHeGl8VsZ=VF(b3V}hG2k&g@u@iBzt>%O~2pI&esy@RFUx) zVZQCz*tSi%T#k&5jqP69D=y0X{CrGAl6`%BW*`s%Ae+syv$I2`Qn?Uq2nLv)ogG$6 zE%x{KnGWQRM3$+Tx>2G~D3qqtDdzLJ$P+M| z%_5OV?1V_vbzR8Cf4JqIVHo)K^%pXcv3TotyGW%{h{xkw5Q#dkEiV=ekof!9z?%~d z=g(E7!z)Oq(;*j#L?RmyiObN>-n-ERY$OQs{fC-WE z`TR3JBO8xbMN0KSbiO^m!^f-pEr_bBgH6ZV(+;jrKl87%5H3QY5S&iu(~XVt z`Q%tE#s-6d3Aucs;QCb?w-;^voEneC7ITEh5sgOWa5&8962;=`54d^#1;35CDRwv< z7ITTajw2Wh%6`9}(Iu`wF^PG8L%bJ2;q&>deAA2$Oi`4b;)4JRkH=$mxm=9IcDvoO l^OXPhyYjA9E`GA_{V$1@FaBct0}KEF002ovPDHLkV1kGx8r%Q? diff --git a/astrid/res/drawable/filter_untagged.png b/astrid/res/drawable/filter_untagged.png index c726d679450c1c0ed2ca28c311ae8609831c9f16..e729647dde65649bcd4219fc540f95b36a21acd0 100644 GIT binary patch delta 668 zcmV;N0%QHR1LoK~y-)?bXdoDp456@vn1+#GsYEXlf9-Nu;2Vf)=%F>Bjsc4GIH; z0--Lg3W5kBYSe{I;V9kB%=Du3oV&S*a4RhCvft`FaQN_?1J60|lfMZK7qwcgsI^8! z&{{LR7Ljr;mwWvde0_ag%w#hEe{6bue5BoO)9dxh>+9GrzaD7yb|i*x1XyAEXrBEn%Bf$X2$H$W*vYE|hRXiT2-EPxtHp%63G@DHta*YPA>sEGlcDzqV z`n?<;9!`qL=F-xVN+c2hSe8Y-UdQvichQkxfP;gBsMdOGd3jmAyu1vK{}DPe46why z9~F_UNF<_M*R2$bMeo18vAesw(Nd{2{`1>>DSrTLCq0~CV#pr=0000UXT0xd%E2&0I5`pWHO0Ts(f{I z6`2bV5dhxa-q_jMsd=9FCk#VGgiIzggkh$9OzOYt8!lIwHdJ^K<$9fBf7&JUkrE zCYZdxzXKp5e13j%dwa{m!UBtni@dzN;5ZJetE;5bX)Mbs*X#AjEa11}IFrF(fKm$I z_nAy47>0pqnna_~DP(PJjchiHWm#q0wj%%r!1eWYLPSdWd|oA!Nj%S^)oKxo#ZXEi zB7|W`I-Mq;&-3*3gzLHte}_Zc1lZr-ABf1W$H&Ks=XoqGEm0^G2*YriMkz(F*F$TK zX_}a(iHIm;w$VnTk9WV`u#qgPKRQ#NT<`mbzOYluOA&91=9|`>g?<+Tp=Q*t*tGU$z%X< z9EWzhO%McA^IQPH>FH@)Ykjc2y{$ezKBlo}%|8MFPEJnZB61LoMwRdT^=h>m@V`1f gK91LFwb;D 20sp - 5px - 5px - 10px + 10dip diff --git a/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java b/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java index fa863f684..c74bc8142 100644 --- a/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java @@ -17,20 +17,21 @@ import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.os.Parcelable; +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.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.TextView.OnEditorActionListener; import android.widget.Toast; +import android.widget.ExpandableListView.ExpandableListContextMenuInfo; +import android.widget.TextView.OnEditorActionListener; import com.flurry.android.FlurryAgent; import com.timsu.astrid.R; @@ -350,13 +351,17 @@ public class FilterListActivity extends ExpandableListActivity { if(emblem == null) emblem = ((BitmapDrawable) getResources().getDrawable( R.drawable.filter_tags1)).getBitmap(); + // create icon by superimposing astrid w/ icon + DisplayMetrics metrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(metrics); Bitmap bitmap = ((BitmapDrawable) getResources().getDrawable( R.drawable.icon_blank)).getBitmap(); bitmap = bitmap.copy(bitmap.getConfig(), true); Canvas canvas = new Canvas(bitmap); + int dimension = 22; canvas.drawBitmap(emblem, new Rect(0, 0, emblem.getWidth(), emblem.getHeight()), - new Rect(bitmap.getWidth() - 22, bitmap.getHeight() - 22, + new Rect(bitmap.getWidth() - dimension, bitmap.getHeight() - dimension, bitmap.getWidth(), bitmap.getHeight()), null); Intent createShortcutIntent = new Intent(); @@ -401,7 +406,8 @@ public class FilterListActivity extends ExpandableListActivity { FrameLayout frameLayout = new FrameLayout(this); frameLayout.setPadding(10, 0, 10, 0); final EditText editText = new EditText(this); - editText.setText(filter.listingTitle); + editText.setText(filter.listingTitle. + replaceAll("\\(\\d+\\)$", "").trim()); //$NON-NLS-1$ //$NON-NLS-2$ frameLayout.addView(editText, new FrameLayout.LayoutParams( FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT)); diff --git a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java index 8f07ad684..420608dbf 100644 --- a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java @@ -6,6 +6,7 @@ package com.todoroo.astrid.adapter; import java.util.ArrayList; import android.app.Activity; +import android.util.DisplayMetrics; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; @@ -13,9 +14,9 @@ import android.widget.AbsListView; import android.widget.BaseExpandableListAdapter; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.ImageView.ScaleType; import android.widget.LinearLayout; import android.widget.TextView; +import android.widget.ImageView.ScaleType; import com.timsu.astrid.R; import com.todoroo.astrid.api.FilterCategory; @@ -26,11 +27,14 @@ public class FilterAdapter extends BaseExpandableListAdapter { private final ArrayList items; protected final Activity activity; + private final DisplayMetrics metrics = new DisplayMetrics(); public FilterAdapter(Activity activity) { super(); this.activity = activity; this.items = new ArrayList(); + + activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); } public boolean hasStableIds() { @@ -116,7 +120,7 @@ public class FilterAdapter extends BaseExpandableListAdapter { public View getCategoryView(FilterCategory filter, boolean isExpanded) { AbsListView.LayoutParams lp = new AbsListView.LayoutParams( - ViewGroup.LayoutParams.FILL_PARENT, 64); + ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); FrameLayout layout = new FrameLayout(activity); layout.setLayoutParams(lp); @@ -140,7 +144,7 @@ public class FilterAdapter extends BaseExpandableListAdapter { textView.setTextAppearance(activity, R.style.TextAppearance_FLA_Category); View view = augmentView(textView, filter); - view.setPadding(50, 2, 0, 2); + view.setPadding((int) (33 * metrics.density), 5, 0, 5); FrameLayout.LayoutParams rowLayout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); rowLayout.gravity = Gravity.CENTER_VERTICAL; @@ -177,7 +181,7 @@ public class FilterAdapter extends BaseExpandableListAdapter { public View getStandardView(FilterListItem filter, boolean isChild) { AbsListView.LayoutParams lp = new AbsListView.LayoutParams( - ViewGroup.LayoutParams.FILL_PARENT, 64); + ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); TextView textView = new TextView(activity); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); @@ -187,14 +191,14 @@ public class FilterAdapter extends BaseExpandableListAdapter { View view = augmentView(textView, filter); view.setBackgroundDrawable(null); view.setLayoutParams(lp); - view.setPadding(isChild ? 40 : 10, 0, 0, 0); + view.setPadding((int) ((isChild ? 27 : 7) * metrics.density), 8, 0, 8); return view; } public View getHeaderView(FilterListHeader header, boolean isChild) { AbsListView.LayoutParams lp = new AbsListView.LayoutParams( - ViewGroup.LayoutParams.FILL_PARENT, 40); + ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); TextView textView = new TextView(activity); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); @@ -204,7 +208,7 @@ public class FilterAdapter extends BaseExpandableListAdapter { View view = augmentView(textView, header); view.setBackgroundResource(R.drawable.edit_titlebar); view.setLayoutParams(lp); - view.setPadding(isChild ? 50 : 10, 0, 0, 0); + view.setPadding((int) ((isChild ? 33 : 7) * metrics.density), 5, 0, 5); return view; }