Added drop shadow to buttons, updates to widget to fix bugs with completing tasks scrolled further down

pull/14/head
Tim Su 14 years ago
parent 885bd84965
commit da74bc73e2

@ -412,6 +412,52 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<!-- rmilk -->
<receiver android:name="org.weloveastrid.rmilk.MilkFilterExposer">
<intent-filter>
<action android:name="com.todoroo.astrid.REQUEST_FILTERS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name="org.weloveastrid.rmilk.MilkDetailExposer">
<intent-filter>
<action android:name="com.todoroo.astrid.REQUEST_DETAILS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity android:name="org.weloveastrid.rmilk.MilkLoginActivity" />
<activity android:name="org.weloveastrid.rmilk.MilkPreferences"
android:icon="@drawable/icon"
android:label="@string/rmilk_MPr_header">
<meta-data android:name="category"
android:resource="@string/SyP_label" />
<intent-filter>
<action android:name="com.todoroo.astrid.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<service android:name="org.weloveastrid.rmilk.MilkBackgroundService"/>
<receiver android:name="org.weloveastrid.rmilk.MilkStartupReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="com.todoroo.astrid.STARTUP" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name="org.weloveastrid.rmilk.MilkSyncActionExposer">
<intent-filter>
<action android:name="com.todoroo.astrid.REQUEST_SYNC_ACTIONS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
</application>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 640 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

After

Width:  |  Height:  |  Size: 845 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 417 B

After

Width:  |  Height:  |  Size: 851 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 B

After

Width:  |  Height:  |  Size: 573 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 B

After

Width:  |  Height:  |  Size: 692 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 B

After

Width:  |  Height:  |  Size: 791 B

@ -96,7 +96,8 @@
android:layout_height="38dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/importance1"
android:id="@+id/importance1"
android:scaleType="fitXY"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
@ -112,12 +113,12 @@
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
android:textSize="14sp" android:textStyle="bold" android:paddingLeft="5dip" />
android:textSize="14sp" android:paddingLeft="5dip" />
<TextView
android:id="@+id/task_due1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical" android:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
@ -126,7 +127,8 @@
android:layout_height="38dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/importance2"
android:id="@+id/importance2"
android:scaleType="centerInside"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
@ -142,12 +144,12 @@
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
android:textSize="14sp" android:textStyle="bold" android:paddingLeft="5dip" />
android:textSize="14sp" android:paddingLeft="5dip" />
<TextView
android:id="@+id/task_due2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical" android:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
@ -157,6 +159,7 @@
android:orientation="horizontal">
<ImageView
android:id="@+id/importance3"
android:scaleType="centerCrop"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
@ -172,12 +175,12 @@
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
android:textSize="14sp" android:textStyle="bold" android:paddingLeft="5dip" />
android:textSize="14sp" android:paddingLeft="5dip" />
<TextView
android:id="@+id/task_due3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical" android:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
@ -202,12 +205,12 @@
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
android:textSize="14sp" android:textStyle="bold" android:paddingLeft="5dip" />
android:textSize="14sp" android:paddingLeft="5dip" />
<TextView
android:id="@+id/task_due4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical" android:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
@ -232,12 +235,12 @@
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
android:textSize="14sp" android:textStyle="bold" android:paddingLeft="5dip" />
android:textSize="14sp" android:paddingLeft="5dip" />
<TextView
android:id="@+id/task_due5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical" android:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
@ -262,12 +265,12 @@
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
android:textSize="14sp" android:textStyle="bold" android:paddingLeft="5dip" />
android:textSize="14sp" android:paddingLeft="5dip" />
<TextView
android:id="@+id/task_due6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical" android:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
@ -292,12 +295,12 @@
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
android:textSize="14sp" android:textStyle="bold" android:paddingLeft="5dip" />
android:textSize="14sp" android:paddingLeft="5dip" />
<TextView
android:id="@+id/task_due7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical" android:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
@ -322,12 +325,12 @@
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
android:textSize="14sp" android:textStyle="bold" android:paddingLeft="5dip" />
android:textSize="14sp" android:paddingLeft="5dip" />
<TextView
android:id="@+id/task_due8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical" android:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
@ -352,12 +355,12 @@
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
android:textSize="14sp" android:textStyle="bold" android:paddingLeft="5dip" />
android:textSize="14sp" android:paddingLeft="5dip" />
<TextView
android:id="@+id/task_due9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical" android:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
@ -382,12 +385,12 @@
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
android:textSize="14sp" android:textStyle="bold" android:paddingLeft="5dip" />
android:textSize="14sp" android:paddingLeft="5dip" />
<TextView
android:id="@+id/task_due10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_gravity="center_vertical" android:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
@ -406,7 +409,7 @@
<!-- if no encouragement -->
<LinearLayout
android:id="@+id/button_plus"
android:layout_width="wrap_content"
android:layout_width="fill_parent"
android:layout_height="36dp"
android:orientation="horizontal"
android:gravity="center_horizontal">
@ -422,12 +425,15 @@
android:src="@drawable/button_plus"
android:layout_width="17dp"
android:layout_height="17dp"
android:layout_weight="70"
android:layout_marginTop="8dp"
android:layout_marginRight="9dp"
android:gravity="right"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="100"
android:textColor="#ffffff"
android:textSize="16sp"
android:textStyle="bold"

@ -30,6 +30,7 @@ import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.core.CoreFilterExposer;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.service.TaskService;
@ -105,6 +106,9 @@ public class PowerWidget extends AppWidgetProvider {
R.drawable.importance_4, R.drawable.importance_5, R.drawable.importance_6
};
@Autowired
private TaskDao taskDao;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
@ -124,9 +128,34 @@ public class PowerWidget extends AppWidgetProvider {
@Override
public void onReceive(Context context, Intent intent) {
if (ACTION_SCROLL_UP.equals(intent.getAction()) ||
if (intent != null && ACTION_MARK_COMPLETE.equals(intent.getAction())) {
DependencyInjectionService.getInstance().inject(this);
long taskId = intent.getLongExtra(COMPLETED_TASK_ID, -1);
if (taskId > 0) {
Task task = taskDao.fetch(taskId, Task.ID, Task.COMPLETION_DATE);
if (task != null) {
task.setValue(Task.COMPLETION_DATE,
task.isCompleted() ? 0 : DateUtilities.now());
taskDao.saveExisting(task);
int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
Preferences.setLong(PREF_LAST_COMPLETED_ID +
appWidgetId, taskId);
Preferences.setInt(PREF_LAST_COMPLETED_POS +
appWidgetId, intent.getIntExtra(COMPLETED_TASK_POSITION, -1));
Preferences.setLong(PREF_LAST_COMPLETED_DATE +
appWidgetId, DateUtilities.now());
System.err.println("completed business. posn " +
intent.getIntExtra(COMPLETED_TASK_POSITION, 0) +
" app id: " + appWidgetId);
}
}
}
if (intent != null && (ACTION_SCROLL_UP.equals(intent.getAction()) ||
ACTION_SCROLL_DOWN.equals(intent.getAction()) ||
ACTION_MARK_COMPLETE.equals(intent.getAction())){
ACTION_MARK_COMPLETE.equals(intent.getAction()))) {
Intent updateIntent = new Intent(context, UpdateService.class);
updateIntent.setAction(intent.getAction());
updateIntent.putExtras(intent.getExtras());
@ -159,6 +188,8 @@ public class PowerWidget extends AppWidgetProvider {
public static class UpdateService extends Service {
private static final int SCROLL_OFFSET_UNSET = -1;
private static final Property<?>[] properties = new Property<?>[] { Task.ID, Task.TITLE,
Task.DUE_DATE, Task.IMPORTANCE, Task.COMPLETION_DATE };
@ -177,30 +208,7 @@ public class PowerWidget extends AppWidgetProvider {
ContextManager.setContext(this);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
if (intent != null && ACTION_MARK_COMPLETE.equals(intent.getAction())) {
long taskId = intent.getLongExtra(COMPLETED_TASK_ID, -1);
if (taskId > 0) {
Task task = taskService.fetchById(taskId, Task.ID, Task.COMPLETION_DATE);
if (task != null) {
taskService.setComplete(task, !task.isCompleted());
int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
Preferences.setLong(PREF_LAST_COMPLETED_ID +
appWidgetId, taskId);
Preferences.setInt(PREF_LAST_COMPLETED_POS +
appWidgetId, intent.getIntExtra(COMPLETED_TASK_POSITION, -1));
Preferences.setLong(PREF_LAST_COMPLETED_DATE +
appWidgetId, DateUtilities.now());
System.err.println("completed business. posn " +
intent.getIntExtra(COMPLETED_TASK_POSITION, 0) +
" app id: " + appWidgetId);
}
}
}
int scrollOffset = 0;
int scrollOffset = SCROLL_OFFSET_UNSET;
int[] appWidgetIds = null;
int appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
@ -279,6 +287,10 @@ public class PowerWidget extends AppWidgetProvider {
} else {
views.setViewVisibility(R.id.speech_bubble, View.GONE);
views.setViewVisibility(R.id.icon, View.GONE);
views.setViewVisibility(R.id.scroll_down, View.GONE);
views.setViewVisibility(R.id.scroll_down_alt, View.VISIBLE);
views.setViewVisibility(R.id.scroll_up, View.GONE);
views.setViewVisibility(R.id.scroll_up_alt, View.VISIBLE);
}
TodorooCursor<Task> cursor = null;
@ -323,7 +335,7 @@ public class PowerWidget extends AppWidgetProvider {
scrollOffset = Math.max(0, scrollOffset);
query = query.replaceAll("[lL][iI][mM][iI][tT] +[^ ]+", "") + " LIMIT " +
scrollOffset + "," + ROW_LIMIT;
scrollOffset + "," + (ROW_LIMIT + 1);
// load last completed task
Task lastCompleted = null;
@ -349,12 +361,20 @@ public class PowerWidget extends AppWidgetProvider {
} else {
cursor.moveToNext();
task.readFromCursor(cursor);
if(lastCompleted != null && task.getId() == lastCompleted.getId()) {
// oops, get the next one
cursor.moveToNext();
if(cursor.isAfterLast())
continue;
task.readFromCursor(cursor);
}
}
long taskId = task.getValue(Task.ID);
// importance
views.setImageViewResource(TASK_IMPORTANCE[position], TASK_IMPORTANCE[task.getValue(Task.IMPORTANCE)]);
views.setImageViewResource(TASK_IMPORTANCE[position],
TASK_IMPORTANCE[task.getValue(Task.IMPORTANCE)]);
// check box
Intent markCompleteIntent = new Intent(context, PowerWidget.class);
@ -370,10 +390,10 @@ public class PowerWidget extends AppWidgetProvider {
if(task.isCompleted()) {
views.setImageViewResource(TASK_CHECKBOX[position], R.drawable.btn_check_buttonless_on);
views.setInt(TASK_TITLE[position], "setPaintFlags", Paint.STRIKE_THRU_TEXT_FLAG);
views.setInt(TASK_TITLE[position], "setPaintFlags", Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
} else {
views.setImageViewResource(TASK_CHECKBOX[position], R.drawable.btn_check_buttonless_off);
views.setInt(TASK_TITLE[position], "setPaintFlags", 0);
views.setInt(TASK_TITLE[position], "setPaintFlags", Paint.ANTI_ALIAS_FLAG);
}
// title
@ -427,12 +447,15 @@ public class PowerWidget extends AppWidgetProvider {
if (scrollOffset-1 < 0){
scrollUpIntent.putExtra(EXTRA_SCROLL_OFFSET, scrollOffset);
views.setImageViewResource(R.id.scroll_up, R.drawable.scroll_up_disabled);
views.setImageViewResource(R.id.scroll_up_alt, R.drawable.scroll_up_disabled);
} else {
scrollUpIntent.putExtra(EXTRA_SCROLL_OFFSET, scrollOffset-1);
views.setImageViewResource(R.id.scroll_up, R.drawable.scroll_up);
views.setImageViewResource(R.id.scroll_up_alt, R.drawable.scroll_up);
}
PendingIntent pScrollUpIntent = PendingIntent.getBroadcast(context, 0, scrollUpIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.scroll_up, pScrollUpIntent);
views.setOnClickPendingIntent(R.id.scroll_up_alt, pScrollUpIntent);
// create intent to scroll down
Intent scrollDownIntent = new Intent(context, PowerWidget.class);
@ -442,12 +465,15 @@ public class PowerWidget extends AppWidgetProvider {
if (!canScrollDown){
scrollDownIntent.putExtra(EXTRA_SCROLL_OFFSET, scrollOffset);
views.setImageViewResource(R.id.scroll_down, R.drawable.scroll_down_disabled);
views.setImageViewResource(R.id.scroll_down_alt, R.drawable.scroll_down_disabled);
} else {
scrollDownIntent.putExtra(EXTRA_SCROLL_OFFSET, scrollOffset+1);
views.setImageViewResource(R.id.scroll_down, R.drawable.scroll_down);
views.setImageViewResource(R.id.scroll_down_alt, R.drawable.scroll_down);
}
PendingIntent pScrollDownIntent = PendingIntent.getBroadcast(context, 0, scrollDownIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.scroll_down, pScrollDownIntent);
views.setOnClickPendingIntent(R.id.scroll_down_alt, pScrollDownIntent);
} catch (Exception e) {
// can happen if database is not ready
Log.e("WIDGET-UPDATE", "Error updating widget", e);

Loading…
Cancel
Save