4x2 widget beta... did the old widget break?

pull/14/head
Tim Su 14 years ago
parent 7ef47912c2
commit c918f251b4

@ -127,6 +127,11 @@
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<activity android:name="com.todoroo.astrid.widget.ConfigurePowerWidget42Activity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<!-- ======================================================= Receivers = -->
@ -149,6 +154,16 @@
android:resource="@xml/power_widget_44_provider_info" />
</receiver>
<receiver android:name="com.todoroo.astrid.widget.PowerWidget42"
android:label="@string/PPW_widget_42_label"
android:icon="@drawable/icon_pp" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/power_widget_42_provider_info" />
</receiver>
<receiver android:name="com.todoroo.astrid.service.GlobalEventReceiver">
<intent-filter>
<action android:name="com.todoroo.astrid.FLUSH_DETAILS" />
@ -159,6 +174,7 @@
<service android:name="com.todoroo.astrid.widget.TasksWidget$UpdateService" />
<service android:name="com.todoroo.astrid.widget.PowerWidget$UpdateService" />
<service android:name="com.todoroo.astrid.widget.PowerWidget42$UpdateService" />
<!-- ======================================================= Providers = -->

@ -45,15 +45,28 @@
android:layout_height="36dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:paddingLeft="7dp"
android:paddingRight="0dp"
android:orientation="horizontal"
android:layout_alignParentTop="true">
<ImageButton
android:id="@+id/scroll_up"
android:background="@drawable/scroll_up"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1" />
<ImageButton
android:visibility="gone"
android:id="@+id/scroll_up_alt"
android:background="@drawable/scroll_up"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/widget_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="100"
android:layout_gravity="left"
android:textColor="#ffffff"
android:textSize="20sp"
@ -62,20 +75,21 @@
android:paddingTop="3dp"
android:paddingBottom="2dp"
android:ellipsize="start" />
<LinearLayout
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:paddingTop="10dp"
android:paddingBottom="9dp"
android:paddingLeft="10dp"
android:paddingRight="9dp" >
<ImageView
android:src="@drawable/button_plus"
android:layout_width="17dp"
android:layout_height="17dp"
/>
</LinearLayout>
<ImageButton
android:id="@+id/scroll_down"
android:background="@drawable/scroll_down"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1" />
<ImageButton
android:visibility="gone"
android:id="@+id/scroll_down_alt"
android:background="@drawable/scroll_down"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1" />
</LinearLayout>
@ -83,20 +97,176 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/header"
android:layout_alignParentBottom="true">
<LinearLayout
android:id="@+id/task_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:paddingBottom="5dp">
<LinearLayout
android:id="@+id/task_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="fill_vertical"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/footer">
</LinearLayout>
android:layout_toLeftOf="@+id/footer"
android:paddingTop="4dip"
android:paddingBottom="3dip"
android:gravity="fill_vertical">
<!-- body rows -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="38dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/importance1"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
android:id="@+id/checkbox1"
android:src="@drawable/btn_check_buttonless_off"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:layout_width="38dp"
android:layout_height="38dp" />
<TextView
android:id="@+id/task_title1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
android:textSize="14sp" android:paddingLeft="5dip" />
<TextView
android:id="@+id/task_due1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical" android:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="38dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/importance2"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
android:id="@+id/checkbox2"
android:src="@drawable/btn_check_buttonless_off"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:layout_width="38dp"
android:layout_height="38dp" />
<TextView
android:id="@+id/task_title2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
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:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="38dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/importance3"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
android:id="@+id/checkbox3"
android:src="@drawable/btn_check_buttonless_off"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:layout_width="38dp"
android:layout_height="38dp" />
<TextView
android:id="@+id/task_title3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
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:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="38dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/importance4"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
android:id="@+id/checkbox4"
android:src="@drawable/btn_check_buttonless_off"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:layout_width="38dp"
android:layout_height="38dp" />
<TextView
android:id="@+id/task_title4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
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:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="38dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/importance5"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
android:id="@+id/checkbox5"
android:src="@drawable/btn_check_buttonless_off"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:layout_width="38dp"
android:layout_height="38dp" />
<TextView
android:id="@+id/task_title5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
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:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
<!-- end body rows -->
</LinearLayout>
<RelativeLayout
android:id="@+id/footer"
@ -107,77 +277,74 @@
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true">
<ImageView
android:id="@+id/scroll_up"
android:src="@drawable/scroll_up"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_alignParentTop="true"
/>
<LinearLayout
android:id="@+id/button_plus"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_height="fill_parent"
android:paddingTop="10dp"
android:paddingBottom="9dp"
android:paddingLeft="10dp"
android:paddingRight="9dp"
android:layout_below="@+id/scroll_up"
android:layout_above="@+id/scroll_down"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:gravity="center_vertical">
<ImageView
android:src="@drawable/button_plus"
android:layout_width="17dp"
android:layout_height="17dp"
/>
</LinearLayout>
<ImageView
android:id="@+id/scroll_down"
android:src="@drawable/scroll_down"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_alignParentBottom="true"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/icon"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:paddingTop="10dp"
android:paddingBottom="9dp"
android:paddingLeft="10dp"
android:paddingRight="9dp"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:gravity="center_vertical">
<ImageView
android:src="@drawable/button_plus"
android:layout_width="17dp"
android:layout_height="17dp"
/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/encouragement"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone">
<LinearLayout
android:id="@+id/speech_bubble"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/icon"
android:layout_width="wrap_content"
<RelativeLayout
android:id="@+id/encouragement"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingRight="20dp"
android:paddingLeft="12dp"
android:background="@drawable/speech_bubble"
android:gravity="fill_horizontal" >
<TextView
android:id="@+id/encouragement_text"
android:visibility="gone">
<LinearLayout
android:id="@+id/speech_bubble"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/icon"
android:layout_width="wrap_content"
android:gravity="top"
android:textColor="#ffffff"
android:textSize="14sp"
android:layout_height="38dp"/>
</LinearLayout>
<ImageView
android:id="@+id/icon"
android:src="@drawable/icon_blank"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentRight="true"
android:layout_alignBottom="@+id/speech_bubble"
android:layout_marginBottom="4dp"/>
</RelativeLayout>
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingRight="20dp"
android:paddingLeft="12dp"
android:background="@drawable/speech_bubble"
android:gravity="fill_horizontal" >
<TextView
android:id="@+id/encouragement_text"
android:layout_width="wrap_content"
android:gravity="top"
android:textColor="#ffffff"
android:textSize="14sp"
android:layout_height="38dp"/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
</FrameLayout>

@ -45,15 +45,21 @@
android:layout_height="36dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:paddingLeft="7dp"
android:paddingRight="0dp"
android:orientation="horizontal"
android:layout_alignParentTop="true">
<ImageButton
android:id="@+id/scroll_up"
android:background="@drawable/scroll_up"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/widget_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_weight="100"
android:layout_gravity="left"
android:textColor="#ffffff"
android:textSize="20sp"
@ -62,20 +68,14 @@
android:paddingTop="3dp"
android:paddingBottom="2dp"
android:ellipsize="start" />
<LinearLayout
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:paddingTop="10dp"
android:paddingBottom="9dp"
android:paddingLeft="10dp"
android:paddingRight="9dp" >
<ImageView
android:src="@drawable/button_plus"
android:layout_width="17dp"
android:layout_height="17dp"
/>
</LinearLayout>
<ImageButton
android:id="@+id/scroll_down"
android:background="@drawable/scroll_down"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
@ -85,93 +85,255 @@
android:orientation="vertical"
android:layout_below="@+id/header"
android:layout_above="@+id/footer"
android:paddingTop="4dip"
android:paddingBottom="3dip"
android:gravity="fill_vertical">
<!-- body rows -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="38dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/importance1"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
android:id="@+id/checkbox1"
android:src="@drawable/btn_check_buttonless_off"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:layout_width="38dp"
android:layout_height="38dp" />
<TextView
android:id="@+id/task_title1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
android:textSize="14sp" android:paddingLeft="5dip" />
<TextView
android:id="@+id/task_due1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical" android:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="38dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/importance2"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
android:id="@+id/checkbox2"
android:src="@drawable/btn_check_buttonless_off"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:layout_width="38dp"
android:layout_height="38dp" />
<TextView
android:id="@+id/task_title2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
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:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="38dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/importance3"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
android:id="@+id/checkbox3"
android:src="@drawable/btn_check_buttonless_off"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:layout_width="38dp"
android:layout_height="38dp" />
<TextView
android:id="@+id/task_title3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
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:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="38dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/importance4"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
android:id="@+id/checkbox4"
android:src="@drawable/btn_check_buttonless_off"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:layout_width="38dp"
android:layout_height="38dp" />
<TextView
android:id="@+id/task_title4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
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:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="38dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/importance5"
android:layout_width="3dp"
android:layout_height="38dp" />
<ImageButton
android:id="@+id/checkbox5"
android:src="@drawable/btn_check_buttonless_off"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:layout_width="38dp"
android:layout_height="38dp" />
<TextView
android:id="@+id/task_title5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="100"
android:layout_gravity="center_vertical" android:maxLines="2"
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:maxLines="2"
android:gravity="right" android:paddingRight="4dp"
android:textSize="12sp" />
</LinearLayout>
<!-- end body rows -->
</LinearLayout>
<RelativeLayout
<FrameLayout
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:paddingLeft="7dp"
android:paddingRight="7dp"
android:layout_above="@+id/encouragement">
<ImageView
android:id="@+id/scroll_up"
android:src="@drawable/scroll_up"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_alignParentLeft="true"
/>
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<!-- if no encouragement -->
<LinearLayout
android:id="@+id/button_plus"
android:layout_width="wrap_content"
android:layout_width="fill_parent"
android:layout_height="36dp"
android:layout_toRightOf="@+id/scroll_up"
android:layout_toLeftOf="@+id/scroll_down"
android:gravity="center_horizontal">
android:orientation="horizontal"
android:gravity="center_horizontal">
<ImageButton
android:id="@+id/scroll_up_alt"
android:background="@drawable/scroll_up"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1" />
<ImageView
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"
android:text="Add Task"
android:gravity="center_vertical"
/>
<ImageButton
android:id="@+id/scroll_down_alt"
android:background="@drawable/scroll_down"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1" />
</LinearLayout>
<ImageView
android:id="@+id/scroll_down"
android:src="@drawable/scroll_down"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/encouragement"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<LinearLayout
android:id="@+id/speech_bubble"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingRight="20dp"
android:paddingLeft="12dp"
android:background="@drawable/speech_bubble"
android:gravity="fill_horizontal" >
<TextView
android:id="@+id/encouragement_text"
android:layout_width="wrap_content"
android:gravity="top"
android:textColor="#ffffff"
android:textSize="14sp"
android:layout_height="38dp"/>
</LinearLayout>
<ImageView
android:id="@+id/icon"
android:src="@drawable/icon_blank"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentRight="true"
android:layout_alignBottom="@+id/speech_bubble"
android:layout_marginBottom="4dp"/>
</RelativeLayout>
<!-- encouragement -->
<RelativeLayout
android:id="@+id/encouragement"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/speech_bubble"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingRight="20dp"
android:paddingLeft="12dp"
android:background="@drawable/speech_bubble"
android:gravity="fill_horizontal" >
<TextView
android:id="@+id/encouragement_text"
android:layout_width="wrap_content"
android:gravity="top"
android:textColor="#ffffff"
android:textSize="14sp"
android:layout_height="38dp"/>
</LinearLayout>
<ImageView
android:id="@+id/icon"
android:src="@drawable/icon_plus"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentRight="true"
android:layout_alignBottom="@+id/speech_bubble"
android:layout_marginBottom="4dp"/>
</RelativeLayout>
</FrameLayout>
</RelativeLayout>
</FrameLayout>

@ -400,7 +400,6 @@
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/encouragement"
android:layout_alignParentBottom="true">
<!-- if no encouragement -->

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:configure="com.todoroo.astrid.widget.ConfigurePowerWidgetActivity"
android:configure="com.todoroo.astrid.widget.ConfigurePowerWidget42Activity"
android:minWidth="294dip"
android:minHeight="146dip"
android:updatePeriodMillis="86400000"

@ -88,6 +88,7 @@ import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.utility.Flags;
import com.todoroo.astrid.utility.Preferences;
import com.todoroo.astrid.widget.PowerWidget;
import com.todoroo.astrid.widget.PowerWidget42;
import com.todoroo.astrid.widget.TasksWidget;
/**
@ -998,6 +999,8 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
TasksWidget.UpdateService.class));
ContextManager.getContext().startService(new Intent(ContextManager.getContext(),
PowerWidget.UpdateService.class));
ContextManager.getContext().startService(new Intent(ContextManager.getContext(),
PowerWidget42.UpdateService.class));
}
setUpTaskList();

@ -25,6 +25,7 @@ import com.todoroo.astrid.reminders.Notifications;
import com.todoroo.astrid.reminders.ReminderService;
import com.todoroo.astrid.utility.Preferences;
import com.todoroo.astrid.widget.PowerWidget;
import com.todoroo.astrid.widget.PowerWidget42;
import com.todoroo.astrid.widget.TasksWidget;
/**
@ -242,6 +243,7 @@ public class TaskDao extends DatabaseDao<Task> {
Astrid2TaskProvider.notifyDatabaseModification();
TasksWidget.updateWidgets(ContextManager.getContext());
PowerWidget.updateWidgets(ContextManager.getContext());
PowerWidget42.updateWidgets(ContextManager.getContext());
}
/**

@ -0,0 +1,200 @@
package com.todoroo.astrid.widget;
import android.app.ExpandableListActivity;
import android.appwidget.AppWidgetManager;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.Spinner;
import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterCategory;
import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.utility.Preferences;
/**
* Configure options for the Power Pack widget. Select a color, filter to use, enable/disable encouragements.
*
* @author jwong
*
*/
public class ConfigurePowerWidget42Activity extends ExpandableListActivity {
int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
FilterAdapter adapter = null;
String[] colors = new String[]{
"Black",
"Blue",
"Red",
"White"
};
public ConfigurePowerWidget42Activity() {
super();
}
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
// Set the result to CANCELED. This will cause the widget host to cancel
// out of the widget placement if they press the back button.
setResult(RESULT_CANCELED);
// Set the view layout resource to use.
setContentView(R.layout.power_widget_configure);
setTitle(R.string.PPW_configure_title);
// Find the widget id from the intent.
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
mAppWidgetId = extras.getInt(
AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
}
// If they gave us an intent without the widget id, just bail.
if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
finish();
}
ArrayAdapter<String> colorAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, colors);
colorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner colorSpinner = (Spinner) findViewById(R.id.PPW_color);
colorSpinner.setAdapter(colorAdapter);
// set up ui
adapter = new FilterAdapter(this, getExpandableListView(),
R.layout.filter_adapter_row, true);
setListAdapter(adapter);
Button button = (Button)findViewById(R.id.ok);
button.setOnClickListener(mOnClickListener);
FlurryAgent.onEvent("power-widget-config"); //$NON-NLS-1$
}
View.OnClickListener mOnClickListener = new View.OnClickListener() {
public void onClick(View v) {
final Context context = ConfigurePowerWidget42Activity.this;
Spinner colorSpinner = (Spinner) findViewById(R.id.PPW_color);
int colorPos = colorSpinner.getSelectedItemPosition();
String color = colors[colorPos];
// removed calendar option
// CheckBox chk_enableCalendar = (CheckBox) findViewById(R.id.PPW_enable_calendar);
// boolean enableCalendar = chk_enableCalendar.isChecked();
boolean enableCalendar = false;
CheckBox chk_disableEncouragements = (CheckBox) findViewById(R.id.PPW_disable_encouragements);
boolean disableEncouragements = chk_disableEncouragements.isChecked();
// Save configuration options
saveConfiguration(adapter.getSelection(), color, enableCalendar, !disableEncouragements);
// Push widget update to surface with newly set prefix
PowerWidget42.updateAppWidget(context, mAppWidgetId);
// Make sure we pass back the original appWidgetId
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, resultValue);
finish();
}
};
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
FilterListItem item = (FilterListItem) adapter.getChild(groupPosition,
childPosition);
if(item instanceof Filter) {
adapter.setSelection(item);
}
return true;
}
@Override
public void onGroupExpand(int groupPosition) {
FilterListItem item = (FilterListItem) adapter.getGroup(groupPosition);
if(item instanceof Filter)
adapter.setSelection(item);
else if(item instanceof FilterCategory)
adapter.saveExpansionSetting((FilterCategory) item, true);
}
@Override
public void onGroupCollapse(int groupPosition) {
FilterListItem item = (FilterListItem) adapter.getGroup(groupPosition);
if(item instanceof Filter)
adapter.setSelection(item);
else if(item instanceof FilterCategory)
adapter.saveExpansionSetting((FilterCategory) item, false);
}
@Override
protected void onResume() {
super.onResume();
adapter.registerRecevier();
}
@Override
protected void onPause() {
super.onPause();
adapter.unregisterRecevier();
}
@Override
protected void onStart() {
super.onStart();
FlurryAgent.onStartSession(this, Constants.FLURRY_KEY);
}
@Override
protected void onStop() {
super.onStop();
FlurryAgent.onEndSession(this);
}
private void saveConfiguration(FilterListItem filterListItem, String color, boolean enableCalendar, boolean enableEncouragements){
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
String sql = null, contentValuesString = null, title = null;
if(filterListItem != null && filterListItem instanceof Filter) {
sql = ((Filter)filterListItem).sqlQuery;
ContentValues values = ((Filter)filterListItem).valuesForNewTasks;
if(values != null)
contentValuesString = AndroidUtilities.contentValuesToSerializedString(values);
title = ((Filter)filterListItem).title;
}
Preferences.setString(PowerWidget.PREF_TITLE + mAppWidgetId, title);
Preferences.setString(PowerWidget.PREF_SQL + mAppWidgetId, sql);
Preferences.setString(PowerWidget.PREF_VALUES + mAppWidgetId, contentValuesString);
Preferences.setString(PowerWidget.PREF_COLOR + mAppWidgetId, color);
Preferences.setBoolean(PowerWidget.PREF_ENABLE_CALENDAR + mAppWidgetId, enableCalendar);
Preferences.setBoolean(PowerWidget.PREF_ENCOURAGEMENTS + mAppWidgetId, enableEncouragements);
}
}

@ -47,8 +47,10 @@ import com.todoroo.astrid.utility.Preferences;
public class PowerWidget extends AppWidgetProvider {
static final String LOG_TAG = "PowerWidget";
static Class updateService;
static {
AstridDependencyInjector.initialize();
updateService = PowerWidget.UpdateService.class;
}
@ -99,7 +101,7 @@ public class PowerWidget extends AppWidgetProvider {
R.id.checkbox7, R.id.checkbox8, R.id.checkbox9, R.id.checkbox10 };
// # of rows defined in the xml file
private static final int ROW_LIMIT = 10;
static int ROW_LIMIT = 10;
public static int[] IMPORTANCE_DRAWABLES = new int[] {
R.drawable.importance_1, R.drawable.importance_2, R.drawable.importance_3,
@ -117,7 +119,7 @@ public class PowerWidget extends AppWidgetProvider {
super.onUpdate(context, appWidgetManager, appWidgetIds);
// Start in service to prevent Application Not Responding timeout
Intent updateIntent = new Intent(context, UpdateService.class);
Intent updateIntent = new Intent(context, updateService);
updateIntent.putExtra(APP_WIDGET_IDS, appWidgetIds);
context.startService(updateIntent);
} catch (SecurityException e) {
@ -156,7 +158,7 @@ public class PowerWidget extends AppWidgetProvider {
if (intent != null && (ACTION_SCROLL_UP.equals(intent.getAction()) ||
ACTION_SCROLL_DOWN.equals(intent.getAction()) ||
ACTION_MARK_COMPLETE.equals(intent.getAction()))) {
Intent updateIntent = new Intent(context, UpdateService.class);
Intent updateIntent = new Intent(context, updateService);
updateIntent.setAction(intent.getAction());
updateIntent.putExtras(intent.getExtras());
context.startService(updateIntent);
@ -173,7 +175,7 @@ public class PowerWidget extends AppWidgetProvider {
*/
public static void updateWidgets(Context context) {
context.startService(new Intent(ContextManager.getContext(),
UpdateService.class));
updateService));
}
/**
@ -181,12 +183,19 @@ public class PowerWidget extends AppWidgetProvider {
* @param id
*/
public static void updateAppWidget(Context context, int appWidgetId){
Intent updateIntent = new Intent(context, UpdateService.class);
Intent updateIntent = new Intent(context, updateService);
updateIntent.putExtra(APP_WIDGET_IDS, new int[]{ appWidgetId });
context.startService(updateIntent);
}
public static class UpdateService extends Service {
static Class widgetClass;
static int widgetLayout;
static {
widgetClass = PowerWidget.class;
widgetLayout = R.layout.widget_power_44;
}
private static final int SCROLL_OFFSET_UNSET = -1;
@ -223,7 +232,7 @@ public class PowerWidget extends AppWidgetProvider {
manager.updateAppWidget(appWidgetId, views);
} else {
if (appWidgetIds == null){
appWidgetIds = manager.getAppWidgetIds(new ComponentName(this, PowerWidget.class));
appWidgetIds = manager.getAppWidgetIds(new ComponentName(this, widgetClass));
}
for (int id : appWidgetIds) {
RemoteViews views = buildUpdate(this, id, scrollOffset);
@ -241,7 +250,7 @@ public class PowerWidget extends AppWidgetProvider {
DependencyInjectionService.getInstance().inject(this);
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.widget_power_44);
widgetLayout);
String color = Preferences.getStringValue(PowerWidget.PREF_COLOR + appWidgetId);
@ -377,7 +386,7 @@ public class PowerWidget extends AppWidgetProvider {
IMPORTANCE_DRAWABLES[task.getValue(Task.IMPORTANCE)]);
// check box
Intent markCompleteIntent = new Intent(context, PowerWidget.class);
Intent markCompleteIntent = new Intent(context, widgetClass);
markCompleteIntent.setAction(ACTION_MARK_COMPLETE);
markCompleteIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
markCompleteIntent.putExtra(COMPLETED_TASK_ID, taskId);
@ -440,7 +449,7 @@ public class PowerWidget extends AppWidgetProvider {
}
// create intent to scroll up
Intent scrollUpIntent = new Intent(context, PowerWidget.class);
Intent scrollUpIntent = new Intent(context, widgetClass);
scrollUpIntent.setAction(ACTION_SCROLL_UP);
scrollUpIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
scrollUpIntent.setType(AppWidgetManager.EXTRA_APPWIDGET_ID + appWidgetId);
@ -458,7 +467,7 @@ public class PowerWidget extends AppWidgetProvider {
views.setOnClickPendingIntent(R.id.scroll_up_alt, pScrollUpIntent);
// create intent to scroll down
Intent scrollDownIntent = new Intent(context, PowerWidget.class);
Intent scrollDownIntent = new Intent(context, widgetClass);
scrollDownIntent.setAction(ACTION_SCROLL_DOWN);
scrollDownIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
scrollDownIntent.setType(AppWidgetManager.EXTRA_APPWIDGET_ID + appWidgetId);

@ -0,0 +1,42 @@
package com.todoroo.astrid.widget;
import com.timsu.astrid.R;
/**
* Power Pack widget. Supports 4x2 size. Configured via
* ConfigurePowerWidget42Activity when widget is added to homescreen.
*
* This class extends PowerWidget but sets references to itself for use in Intents.
*
* @author jwong (jwong@dayspring-tech.com)
*
*/
@SuppressWarnings("nls")
public class PowerWidget42 extends PowerWidget {
static final String LOG_TAG = "PowerWidget42";
static {
// set reference to my UpdateService for calls to launch the service
updateService = PowerWidget42.UpdateService.class;
ROW_LIMIT = 5;
}
/**
* Extend PowerWidget's UpdateService so that the widget provider class
* can be specified. We can't just used PowerWidget's UpdateService
* since it's a static class and uses PowerWidget's variables, not this
* class' variables.
*
* @author jwong (jwong@dayspring-tech.com)
*
*/
public static class UpdateService extends PowerWidget.UpdateService {
static {
widgetClass = PowerWidget42.class;
widgetLayout = R.layout.widget_power_42;
}
}
}
Loading…
Cancel
Save