Option for legacy style importance indicators and check boxes

pull/14/head
Sam Bosley 13 years ago
parent 7f63206531
commit d814380b0b

@ -9,6 +9,12 @@
android:paddingBottom="2dip"
android:gravity="center_vertical"
android:orientation="horizontal">
<View
android:id="@+id/importance_legacy"
android:layout_width="4dip"
android:layout_height="fill_parent"
android:visibility="gone" />
<!-- indent -->
<View android:id="@+id/indent"

@ -1,101 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- See the file "LICENSE" for the full license governing this code. -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:astrid="http://schemas.android.com/apk/res/com.timsu.astrid"
android:id="@+id/rowBody"
android:background="@android:drawable/list_selector_background"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="57dip" >
<!-- completion check-box -->
<greendroid.widget.AsyncImageView
android:id="@+id/picture"
android:layout_width="47dip"
android:layout_height="45dip"
android:layout_centerVertical="true"
android:padding="2dip"
android:paddingTop="1dip"
android:paddingLeft="1dip"
android:layout_marginLeft="5dip"
astrid:defaultSrc="@drawable/icn_default_person_image"
android:scaleType="fitCenter"
android:visibility="gone" >
</greendroid.widget.AsyncImageView>
<ImageView
android:id="@+id/pictureBorder"
android:layout_width="47dip"
android:layout_height="47dip"
android:layout_marginLeft="5dip"
android:layout_centerVertical="true"
android:background="@drawable/icn_default_person_image"
android:scaleType="center"
android:visibility="gone" >
</ImageView>
<CheckBox
android:id="@+id/completeBox"
android:layout_width="45dip"
android:layout_marginLeft="13dip"
android:layout_height="fill_parent"
android:minHeight="40dip"
android:scaleType="center"
android:layout_centerVertical="true" />
<LinearLayout
android:id="@+id/task_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/completeBox"
android:layout_centerVertical="true"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingLeft="2dip" >
<!-- task name -->
<TextView
android:id="@+id/title"
style="@style/TextAppearance.TAd_ItemTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="100"
android:gravity="center_vertical"
android:maxLines="2" />
<!-- due date -->
<TextView
android:id="@+id/dueDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="4dip"
android:gravity="center_vertical|right" />
</LinearLayout>
<!-- details line 1 -->
<TextView
android:id="@+id/details1"
style="@style/TextAppearance.TAd_ItemDetails"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/task_row"
android:layout_below="@id/task_row"
android:visibility="gone" />
android:background="@android:drawable/list_selector_background"
android:orientation="horizontal">
<!-- details line 2 -->
<View
android:id="@+id/importance_legacy"
android:layout_width="4dip"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:visibility="gone" />
<TextView
android:id="@+id/details2"
style="@style/TextAppearance.TAd_ItemDetails"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/task_row"
android:layout_below="@id/details1"
android:layout_marginLeft="5dip"
android:visibility="gone" />
<RelativeLayout
android:id="@+id/rowBody"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="57dip">
<!-- completion check-box -->
<greendroid.widget.AsyncImageView
android:id="@+id/picture"
android:layout_width="47dip"
android:layout_height="45dip"
android:layout_centerVertical="true"
android:padding="2dip"
android:paddingTop="1dip"
android:paddingLeft="1dip"
android:layout_marginLeft="5dip"
astrid:defaultSrc="@drawable/icn_default_person_image"
android:scaleType="fitCenter"
android:visibility="gone" >
</greendroid.widget.AsyncImageView>
<ImageView
android:id="@+id/pictureBorder"
android:layout_width="47dip"
android:layout_height="47dip"
android:layout_marginLeft="5dip"
android:layout_centerVertical="true"
android:background="@drawable/icn_default_person_image"
android:scaleType="center"
android:visibility="gone" >
</ImageView>
<CheckBox
android:id="@+id/completeBox"
android:layout_width="45dip"
android:layout_marginLeft="13dip"
android:layout_height="fill_parent"
android:minHeight="40dip"
android:scaleType="center"
android:layout_centerVertical="true" />
<LinearLayout
android:id="@+id/task_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/completeBox"
android:layout_centerVertical="true"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingLeft="2dip" >
<!-- task name -->
<TextView
android:id="@+id/title"
style="@style/TextAppearance.TAd_ItemTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="100"
android:gravity="center_vertical"
android:maxLines="2" />
<!-- due date -->
<TextView
android:id="@+id/dueDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="4dip"
android:gravity="center_vertical|right" />
</LinearLayout>
<!-- details line 1 -->
<TextView
android:id="@+id/details1"
style="@style/TextAppearance.TAd_ItemDetails"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/task_row"
android:layout_below="@id/task_row"
android:visibility="gone" />
<!-- details line 2 -->
<TextView
android:id="@+id/details2"
style="@style/TextAppearance.TAd_ItemDetails"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/task_row"
android:layout_below="@id/details1"
android:layout_marginLeft="5dip"
android:visibility="gone" />
</RelativeLayout>
</RelativeLayout>
</LinearLayout>

@ -201,6 +201,8 @@
<string name="p_showSmartConfirmation_key">showSmartConfirmation</string>
<string name="p_allowCompressedTaskRows">allowCompressedTaskRows</string>
<string name="p_useLegacyImportanceStyle">legacyImportanceStyle</string>
<!-- ========================================================= DEFAULTS == -->
<!-- default urgency setting (corresponds to entry in TEA_urgency) -->

@ -481,6 +481,10 @@
<string name="EPr_compressTaskRows_title">Compact Task Row</string>
<string name="EPr_compressTaskRows_desc">Compress task rows to fit title</string>
<!-- Preferences: Use legacy importance and checkbox style -->
<string name="EPr_userLegacyImportance_title">Use legacy importance style</string>
<string name="EPr_userLegacyImportance_desc">Use legacy importance style</string>
<!-- Preference: Theme -->
<string name="EPr_theme_title">Color Theme</string>
<!-- Preference: Theme Description (%s => value) -->

@ -27,6 +27,12 @@
android:title="@string/EPr_compressTaskRows_title"
android:summary="@string/EPr_compressTaskRows_desc"
android:defaultValue="false" />
<com.todoroo.astrid.ui.MultilineCheckboxPreference
android:key="@string/p_useLegacyImportanceStyle"
android:title="@string/EPr_userLegacyImportance_title"
android:summary="@string/EPr_userLegacyImportance_desc"
android:defaultValue="false"/>
<com.todoroo.astrid.ui.MultilineCheckboxPreference
android:key="@string/p_showSmartConfirmation_key"
@ -38,6 +44,7 @@
android:entries="@array/EPr_themes"
android:entryValues="@array/EPr_theme_settings"
android:title="@string/EPr_theme_title" />
</PreferenceCategory>

@ -126,25 +126,31 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
};
public static int[] IMPORTANCE_RESOURCES = new int[] {
R.drawable.importance_check_1, //task_indicator_0,
R.drawable.importance_check_2, //task_indicator_1,
R.drawable.importance_check_3, //task_indicator_2,
R.drawable.importance_check_4, //task_indicator_3,
R.drawable.importance_check_1,
R.drawable.importance_check_2,
R.drawable.importance_check_3,
R.drawable.importance_check_4,
};
public static int[] LEGACY_IMPORTANCE_RESOURCES = new int[] {
R.drawable.importance_1,
R.drawable.importance_2,
R.drawable.importance_3,
R.drawable.importance_4,
};
public static int[] IMPORTANCE_RESOURCES_LARGE = new int[] {
R.drawable.check_box_large_1, //task_indicator_0,
R.drawable.check_box_large_2, //task_indicator_1,
R.drawable.check_box_large_3, //task_indicator_2,
R.drawable.check_box_large_4, //task_indicator_3,
R.drawable.check_box_large_1,
R.drawable.check_box_large_2,
R.drawable.check_box_large_3,
R.drawable.check_box_large_4,
};
public static int[] IMPORTANCE_REPEAT_RESOURCES = new int[] {
R.drawable.importance_check_repeat_1, //task_indicator_0,
R.drawable.importance_check_repeat_2, //task_indicator_1,
R.drawable.importance_check_repeat_3, //task_indicator_2,
R.drawable.importance_check_repeat_4, //task_indicator_3,
R.drawable.importance_check_repeat_1,
R.drawable.importance_check_repeat_2,
R.drawable.importance_check_repeat_3,
R.drawable.importance_check_repeat_4,
};
// --- instance variables
@ -263,6 +269,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
viewHolder.task = new Task();
viewHolder.view = view;
viewHolder.rowBody = (ViewGroup)view.findViewById(R.id.rowBody);
viewHolder.importance = view.findViewById(R.id.importance_legacy);
viewHolder.nameView = (TextView)view.findViewById(R.id.title);
viewHolder.picture = (AsyncImageView)view.findViewById(R.id.picture);
viewHolder.pictureBorder = (ImageView)view.findViewById(R.id.pictureBorder);
@ -329,6 +336,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
public ViewGroup view;
public ViewGroup rowBody;
public TextView nameView;
public View importance; // for legacy importance style
public CheckBox completeBox;
public AsyncImageView picture;
public ImageView pictureBorder;
@ -431,17 +439,28 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
// importance bar
final CheckBox checkBoxView = viewHolder.completeBox; {
// Logic for legacy style
boolean useLegacyImportance = Preferences.getBoolean(R.string.p_useLegacyImportanceStyle, false);
if (useLegacyImportance) {
viewHolder.importance.setVisibility(View.VISIBLE);
} else {
viewHolder.importance.setVisibility(View.GONE);
}
int value = task.getValue(Task.IMPORTANCE);
if (value >= IMPORTANCE_RESOURCES.length)
value = IMPORTANCE_RESOURCES.length - 1;
if (!TextUtils.isEmpty(task.getValue(Task.RECURRENCE))) {
if (useLegacyImportance) {
checkBoxView.setButtonDrawable(R.drawable.btn_check);
viewHolder.importance.setBackgroundResource(LEGACY_IMPORTANCE_RESOURCES[value]);
} else if (!TextUtils.isEmpty(task.getValue(Task.RECURRENCE))) {
checkBoxView.setButtonDrawable(IMPORTANCE_REPEAT_RESOURCES[value]);
} else {
checkBoxView.setButtonDrawable(IMPORTANCE_RESOURCES[value]);
}
if (pictureView != null && pictureView.getVisibility() == View.VISIBLE) {
checkBoxView.setVisibility(View.INVISIBLE);
if (viewHolder.pictureBorder != null)
if (viewHolder.pictureBorder != null && !useLegacyImportance)
viewHolder.pictureBorder.setBackgroundResource(IMPORTANCE_RESOURCES_LARGE[value]);
} else {
checkBoxView.setVisibility(View.VISIBLE);

Loading…
Cancel
Save