diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java b/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java index 4643209fc..ebbac546c 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java @@ -16,6 +16,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; +import android.support.v4.app.Fragment; import android.text.TextUtils; import android.util.DisplayMetrics; import android.view.LayoutInflater; @@ -76,6 +77,8 @@ public class EditPeopleControlSet extends PopupControlSet { @Autowired TagDataService tagDataService; + private final Fragment fragment; + private final PeopleContainer sharedWithContainer; private final CheckBox cbFacebook; @@ -108,10 +111,11 @@ public class EditPeopleControlSet extends PopupControlSet { // --- UI initialization - public EditPeopleControlSet(Activity activity, int viewLayout, int displayViewLayout, int title, int loginRequestCode) { + public EditPeopleControlSet(Activity activity, Fragment fragment, int viewLayout, int displayViewLayout, int title, int loginRequestCode) { super(activity, viewLayout, displayViewLayout, title); DependencyInjectionService.getInstance().inject(this); this.loginRequestCode = loginRequestCode; + this.fragment = fragment; displayText.setText(activity.getString(R.string.TEA_control_who)); sharedWithRow = LayoutInflater.from(activity).inflate(R.layout.control_set_default_display, null); @@ -153,8 +157,12 @@ public class EditPeopleControlSet extends PopupControlSet { @Override public void readFromTask(Task sourceTask) { - task = sourceTask; - setUpData(); + setTask(sourceTask); + setUpData(task); + } + + public void setTask(Task task) { + this.task = task; } public View getSharedWithRow() { @@ -166,7 +174,7 @@ public class EditPeopleControlSet extends PopupControlSet { } @SuppressWarnings("nls") - private void setUpData() { + public void setUpData(final Task task) { try { JSONObject sharedWith; if(task.getValue(Task.SHARED_WITH).length() > 0) @@ -220,7 +228,7 @@ public class EditPeopleControlSet extends PopupControlSet { if(collaborators.size() > 0) buildCollaborators(collaborators); - buildAssignedToSpinner(sharedPeople); + buildAssignedToSpinner(task, sharedPeople); } catch (JSONException e) { exceptionService.reportError("json-reading-data", e); } finally { @@ -284,13 +292,13 @@ public class EditPeopleControlSet extends PopupControlSet { } @SuppressWarnings("nls") - private void buildAssignedToSpinner(ArrayList sharedPeople) throws JSONException { + private void buildAssignedToSpinner(Task model, ArrayList sharedPeople) throws JSONException { HashSet userIds = new HashSet(); HashSet emails = new HashSet(); HashMap names = new HashMap(); - if(task.getValue(Task.USER_ID) > 0) { - JSONObject user = new JSONObject(task.getValue(Task.USER)); + if(model.getValue(Task.USER_ID) > 0) { + JSONObject user = new JSONObject(model.getValue(Task.USER)); sharedPeople.add(0, user); } @@ -298,8 +306,8 @@ public class EditPeopleControlSet extends PopupControlSet { myself.put("id", Task.USER_ID_SELF); sharedPeople.add(0, myself); - boolean hasTags = task.getTransitory("tags") != null && - ((HashSet)task.getTransitory("tags")).size() > 0; + boolean hasTags = model.getTransitory("tags") != null && + ((HashSet)model.getTransitory("tags")).size() > 0; if (actFmPreferenceService.isLoggedIn() && hasTags) { JSONObject unassigned = new JSONObject(); unassigned.put("id", Task.USER_ID_UNASSIGNED); @@ -347,7 +355,7 @@ public class EditPeopleControlSet extends PopupControlSet { names.put(name, atu); } - String assignedStr = task.getValue(Task.USER); + String assignedStr = model.getValue(Task.USER); int assignedIndex = 0; if (!TextUtils.isEmpty(assignedStr)) { JSONObject assigned = new JSONObject(assignedStr); @@ -409,8 +417,11 @@ public class EditPeopleControlSet extends PopupControlSet { } } - private void assignToMe() { - assignedClear.performClick(); + public void assignToMe() { + if (assignedList != null && assignedList.getChildAt(0) != null) { + assignedList.performItemClick(assignedList.getChildAt(0), 0, 0); + refreshDisplayView(); + } } private void setUpListeners() { @@ -542,7 +553,7 @@ public class EditPeopleControlSet extends PopupControlSet { DialogInterface.OnClickListener okListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface d, int which) { - activity.startActivityForResult(new Intent(activity, ActFmLoginActivity.class), + fragment.startActivityForResult(new Intent(activity, ActFmLoginActivity.class), loginRequestCode); } }; @@ -588,10 +599,9 @@ public class EditPeopleControlSet extends PopupControlSet { } private void makePrivateTask() { - assignToMe(); sharedWithContainer.removeAllViews(); sharedWithContainer.addPerson(""); //$NON-NLS-1$ - refreshDisplayView(); + assignToMe(); } private void showSaveToast(String saveToast) { @@ -700,6 +710,26 @@ public class EditPeopleControlSet extends PopupControlSet { return assignedToMe; } + /** + * Check if task will be assigned to current user when save setting is called + */ + public boolean willBeAssignedToMe() { + JSONObject userJson = null; + if(!TextUtils.isEmpty(assignedCustom.getText())) { + userJson = PeopleContainer.createUserJson(assignedCustom); + } else { + AssignedToUser item = (AssignedToUser) assignedList.getAdapter().getItem(assignedList.getCheckedItemPosition()); + if (item != null) + userJson = item.user; + } + + if(userJson == null || userJson.optLong("id", Task.USER_ID_EMAIL) == Task.USER_ID_SELF) { //$NON-NLS-1$ + return true; + } + + return false; + } + public String getAssignedToString() { return assignedDisplay.getText().toString(); } diff --git a/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatControlSet.java b/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatControlSet.java index be96498e1..3229a7b3f 100644 --- a/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatControlSet.java @@ -324,6 +324,10 @@ public class RepeatControlSet extends PopupControlSet { return null; } + public boolean isRecurrenceSet() { + return doRepeat; + } + @Override protected void refreshDisplayView() { TextView repeatDisplay = (TextView) getDisplayView().findViewById(R.id.display_row_edit); diff --git a/astrid/res/drawable/list_arrow_down_white.png b/astrid/res/drawable/list_arrow_down_white.png new file mode 100644 index 000000000..101e65b8d Binary files /dev/null and b/astrid/res/drawable/list_arrow_down_white.png differ diff --git a/astrid/res/drawable/list_arrow_up_white.png b/astrid/res/drawable/list_arrow_up_white.png new file mode 100644 index 000000000..2971a893c Binary files /dev/null and b/astrid/res/drawable/list_arrow_up_white.png differ diff --git a/astrid/res/drawable/list_popover_bg_white.9.png b/astrid/res/drawable/list_popover_bg_white.9.png new file mode 100644 index 000000000..77b1abce9 Binary files /dev/null and b/astrid/res/drawable/list_popover_bg_white.9.png differ diff --git a/astrid/res/layout-land/filter_list_activity.xml b/astrid/res/layout-land/filter_list_activity.xml index 5f7b3661b..8e7b8651d 100644 --- a/astrid/res/layout-land/filter_list_activity.xml +++ b/astrid/res/layout-land/filter_list_activity.xml @@ -3,7 +3,7 @@ diff --git a/astrid/res/layout-land/task_list_wrapper_activity_3pane.xml b/astrid/res/layout-land/task_list_wrapper_activity_3pane.xml index d2a237e16..007509d14 100644 --- a/astrid/res/layout-land/task_list_wrapper_activity_3pane.xml +++ b/astrid/res/layout-land/task_list_wrapper_activity_3pane.xml @@ -17,7 +17,7 @@ + android:background="?attr/asSeparatorBackground"/> + android:background="?attr/asSeparatorBackground"/> diff --git a/astrid/res/layout/list_dropdown_popover.xml b/astrid/res/layout/list_dropdown_popover.xml index 3b595ee2b..597a58ca5 100644 --- a/astrid/res/layout/list_dropdown_popover.xml +++ b/astrid/res/layout/list_dropdown_popover.xml @@ -17,7 +17,7 @@ android:layout_height="27dip" android:scaleType="fitCenter" android:layout_marginBottom="-8dip" - android:src="@drawable/list_arrow_up" /> + android:src="?attr/asListArrowUp" /> + android:layout_below="@android:id/list" /> diff --git a/astrid/res/layout/main_menu_popover.xml b/astrid/res/layout/main_menu_popover.xml index 8fd5b62a2..3a0d63b7a 100644 --- a/astrid/res/layout/main_menu_popover.xml +++ b/astrid/res/layout/main_menu_popover.xml @@ -9,7 +9,7 @@ android:id="@+id/content" android:layout_width="280dip" android:layout_height="wrap_content" - android:background="@drawable/list_popover_bg" + android:background="?attr/asListPopoverBg" android:orientation="vertical" android:layout_below="@+id/gdi_arrow_up"/> @@ -20,7 +20,7 @@ android:layout_marginLeft="-10dip" android:scaleType="fitCenter" android:layout_marginBottom="-8dip" - android:src="@drawable/list_arrow_up" /> + android:src="?attr/asListArrowUp" /> + android:layout_below="@android:id/list"/> diff --git a/astrid/res/layout/task_list_activity.xml b/astrid/res/layout/task_list_activity.xml index d4c031d7e..a10f9e049 100644 --- a/astrid/res/layout/task_list_activity.xml +++ b/astrid/res/layout/task_list_activity.xml @@ -4,6 +4,9 @@ android:id="@+id/taskListParent" android:layout_width="fill_parent" android:layout_height="fill_parent" + android:focusable="true" + android:focusableInTouchMode="true" + android:descendantFocusability="beforeDescendants" style="@style/Content" android:orientation="vertical"> @@ -18,60 +21,94 @@ - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/astrid/res/layout/task_list_wrapper_activity_3pane.xml b/astrid/res/layout/task_list_wrapper_activity_3pane.xml index 44ad9bb5a..47037dc87 100644 --- a/astrid/res/layout/task_list_wrapper_activity_3pane.xml +++ b/astrid/res/layout/task_list_wrapper_activity_3pane.xml @@ -17,7 +17,7 @@ + android:background="?attr/asSeparatorBackground"/> + android:background="?attr/asSeparatorBackground"/> + + diff --git a/astrid/res/values/colors.xml b/astrid/res/values/colors.xml index c3c5a0bc0..341e18b5d 100644 --- a/astrid/res/values/colors.xml +++ b/astrid/res/values/colors.xml @@ -30,7 +30,7 @@ #d90000 #1f78b4 #292929 - #101010 + #000000 #262626 diff --git a/astrid/res/values/styles.xml b/astrid/res/values/styles.xml index 6fee98e2f..0350c7d7b 100644 --- a/astrid/res/values/styles.xml +++ b/astrid/res/values/styles.xml @@ -31,6 +31,8 @@ #000000 @drawable/taskedit_arrow_up_white @drawable/icn_edit_repeats_blue + @drawable/list_popover_bg_white + @drawable/list_arrow_up_white @drawable/header_blue @@ -74,6 +76,8 @@ @drawable/taskedit_arrow_up_white @drawable/icn_edit_repeats_red #ffffff + @drawable/list_popover_bg + @drawable/list_arrow_up @drawable/header_red @@ -337,6 +341,10 @@ + + diff --git a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java index 3a3d9ae6c..3d3e50409 100644 --- a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java @@ -213,6 +213,7 @@ public class AstridActivity extends FragmentActivity }); } catch (Exception e) { // Don't worry about it + e.printStackTrace(); } } diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditFragment.java b/astrid/src/com/todoroo/astrid/activity/TaskEditFragment.java index 9d1a59368..dbbe3b5e0 100755 --- a/astrid/src/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskEditFragment.java @@ -150,7 +150,7 @@ public final class TaskEditFragment extends Fragment implements // --- request codes - private static final int REQUEST_LOG_IN = 0; + public static final int REQUEST_LOG_IN = 0; private static final int REQUEST_VOICE_RECOG = 1; // --- menu codes @@ -505,7 +505,7 @@ public final class TaskEditFragment extends Fragment implements // EditPeopleControlSet relies on the "tags" transitory created by the // TagsControlSet, so we put the tags control before the people control - controls.add(peopleControlSet = new EditPeopleControlSet(getActivity(), + controls.add(peopleControlSet = new EditPeopleControlSet(getActivity(), this, R.layout.control_set_assigned, R.layout.control_set_default_display, R.string.actfm_EPA_assign_label, REQUEST_LOG_IN)); diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java index a3e0eb2c6..e97e99967 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java @@ -41,11 +41,15 @@ import android.view.ContextMenu.ContextMenuInfo; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MenuInflater; +import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; +import android.view.View.OnFocusChangeListener; import android.view.View.OnKeyListener; import android.view.View.OnLongClickListener; +import android.view.View.OnTouchListener; import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; @@ -55,6 +59,7 @@ import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ImageButton; +import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; @@ -72,12 +77,15 @@ import com.todoroo.andlib.sql.Functions; import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; +import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.widget.GestureService; import com.todoroo.andlib.widget.GestureService.GestureInterface; import com.todoroo.astrid.actfm.ActFmLoginActivity; +import com.todoroo.astrid.actfm.EditPeopleControlSet; import com.todoroo.astrid.actfm.TagUpdatesActivity; import com.todoroo.astrid.actfm.TagViewFragment; +import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; import com.todoroo.astrid.activity.SortSelectionActivity.OnSortSelectedListener; import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter.OnCompletedTaskListener; @@ -96,12 +104,14 @@ import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.gcal.GCalControlSet; import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.helper.MetadataHelper; import com.todoroo.astrid.helper.ProgressBarSyncResultCallback; import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader; import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader.ContextMenuItem; import com.todoroo.astrid.reminders.ReminderDebugContextActions; +import com.todoroo.astrid.repeats.RepeatControlSet; import com.todoroo.astrid.service.AddOnService; import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.MetadataService; @@ -115,6 +125,7 @@ import com.todoroo.astrid.service.UpgradeService; import com.todoroo.astrid.sync.SyncResultCallback; import com.todoroo.astrid.sync.SyncV2Provider; import com.todoroo.astrid.ui.DateChangedAlerts; +import com.todoroo.astrid.ui.DeadlineControlSet; import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Flags; @@ -199,6 +210,9 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, @Autowired TagDataService tagDataService; + @Autowired + ActFmPreferenceService actFmPreferenceService; + private final TaskContextActionExposer[] contextItemExposers = new TaskContextActionExposer[] { new ReminderDebugContextActions.MakeNotification(), new ReminderDebugContextActions.WhenReminder(), }; @@ -216,6 +230,8 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, private ImageButton voiceAddButton; private ImageButton quickAddButton; private EditText quickAddBox; + private LinearLayout quickAddControls; + private View quickAddControlsContainer; private Timer backgroundTimer; private final LinkedHashSet syncActions = new LinkedHashSet(); private boolean isFilter; @@ -229,6 +245,11 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, protected OnTaskListItemClickedListener mListener; private boolean mDualFragments = false; + private DeadlineControlSet deadlineControl; + private RepeatControlSet repeatControl; + private GCalControlSet gcalControl; + private EditPeopleControlSet peopleControl; + /* * ====================================================================== * ======================================================= initialization @@ -503,6 +524,18 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, } }); + getListView().setOnTouchListener(new OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + quickAddBox.clearFocus(); + return false; + } + }); + + quickAddControls = (LinearLayout) getView().findViewById(R.id.taskListQuickaddControls); + quickAddControlsContainer = getView().findViewById(R.id.taskListQuickaddControlsContainer); + setUpQuickAddControlSets(); + // set listener for pressing enter in quick-add box quickAddBox = (EditText) getView().findViewById(R.id.quickAddText); quickAddBox.setOnEditorActionListener(new OnEditorActionListener() { @@ -521,6 +554,13 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, } }); + quickAddBox.setOnFocusChangeListener(new OnFocusChangeListener() { + @Override + public void onFocusChange(View v, boolean hasFocus) { + quickAddControlsContainer.setVisibility(hasFocus ? View.VISIBLE : View.GONE); + } + }); + quickAddButton = ((ImageButton) getView().findViewById( R.id.quickAddButton)); @@ -595,6 +635,44 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, getView().findViewById(R.id.progressBar).setVisibility(View.GONE); } + private void setUpQuickAddControlSets() { + + repeatControl = new RepeatControlSet(getActivity(), + R.layout.control_set_repeat, + R.layout.control_set_repeat_display, R.string.repeat_enabled); + + gcalControl = new GCalControlSet(getActivity(), + R.layout.control_set_gcal, R.layout.control_set_gcal_display, + R.string.gcal_TEA_addToCalendar_label); + + deadlineControl = new DeadlineControlSet( + getActivity(), R.layout.control_set_deadline, + R.layout.control_set_default_display, + repeatControl.getDisplayView(), gcalControl.getDisplayView()); + deadlineControl.setUseNewlineForDisplaySeparator(true); + + peopleControl = new EditPeopleControlSet(getActivity(), this, + R.layout.control_set_assigned, + R.layout.control_set_default_display, + R.string.actfm_EPA_assign_label, TaskEditFragment.REQUEST_LOG_IN); + + resetControlSets(); + + LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1.0f); + quickAddControls.addView(peopleControl.getDisplayView(), 0, lp); + quickAddControls.addView(deadlineControl.getDisplayView(), 2, lp); + } + + private void resetControlSets() { + Task empty = new Task(); + repeatControl.readFromTask(empty); + gcalControl.readFromTask(empty); + deadlineControl.readFromTask(empty); + peopleControl.setUpData(empty); + peopleControl.assignToMe(); + peopleControl.setTask(null); + } + // Subclasses can override these to customize extras in quickadd intent protected Intent getOnClickQuickAddIntent(Task t) { Intent intent = new Intent(getActivity(), TaskEditActivity.class); @@ -1076,9 +1154,42 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, try { if (title != null) title = title.trim(); + if (!peopleControl.willBeAssignedToMe() && !actFmPreferenceService.isLoggedIn()) { + DialogInterface.OnClickListener okListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface d, int which) { + startActivity(new Intent(getActivity(), ActFmLoginActivity.class)); + } + }; + + DialogInterface.OnClickListener cancelListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface d, int which) { + // Reset people control + peopleControl.assignToMe(); + } + }; + DialogUtilities.okCancelCustomDialog(getActivity(), getActivity().getString(R.string.actfm_EPA_login_button), + getActivity().getString(R.string.actfm_EPA_login_to_share), R.string.actfm_EPA_login_button, + R.string.actfm_EPA_dont_share_button, android.R.drawable.ic_dialog_alert, + okListener, cancelListener); + return null; + } + Task task = createWithValues(filter.valuesForNewTasks, title, taskService, metadataService); + if (repeatControl.isRecurrenceSet()) + repeatControl.writeToModel(task); + if (deadlineControl.isDeadlineSet()) + deadlineControl.writeToModel(task); + gcalControl.writeToModel(task); + peopleControl.setTask(task); + peopleControl.saveSharingSettings(null); + taskService.save(task); + + resetControlSets(); + boolean gcalCreateEventEnabled = Preferences.getStringValue(R.string.gcal_p_default) != null && !Preferences.getStringValue(R.string.gcal_p_default).equals( "-1"); diff --git a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java index 2e651bd69..a8522e57c 100644 --- a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java @@ -39,6 +39,7 @@ import com.timsu.astrid.R; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.DependencyInjectionService; +import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.activity.FilterListFragment; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridFilterExposer; @@ -116,6 +117,9 @@ public class FilterAdapter extends ArrayAdapter { this.skipIntentFilters = skipIntentFilters; this.selectable = selectable; + if (((AstridActivity) activity).getFragmentLayout() != AstridActivity.LAYOUT_SINGLE) + filterStyle = R.style.TextAppearance_FLA_Filter_Tablet; + inflater = (LayoutInflater) activity.getSystemService( Context.LAYOUT_INFLATER_SERVICE); diff --git a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java index 006ee5540..212b091a1 100644 --- a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java @@ -207,7 +207,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable { this.fragment = fragment; this.onCompletedTaskListener = onCompletedTaskListener; - fontSize = Preferences.getIntegerFromString(R.string.p_fontSize, 20); + fontSize = Preferences.getIntegerFromString(R.string.p_fontSize, 18); paint = new Paint(); displayMetrics = new DisplayMetrics(); fragment.getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); @@ -923,7 +923,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable { @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); - fontSize = Preferences.getIntegerFromString(R.string.p_fontSize, 20); + fontSize = Preferences.getIntegerFromString(R.string.p_fontSize, 18); } diff --git a/astrid/src/com/todoroo/astrid/ui/DateAndTimeDialog.java b/astrid/src/com/todoroo/astrid/ui/DateAndTimeDialog.java index e97994ea8..119751b55 100644 --- a/astrid/src/com/todoroo/astrid/ui/DateAndTimeDialog.java +++ b/astrid/src/com/todoroo/astrid/ui/DateAndTimeDialog.java @@ -93,10 +93,10 @@ public class DateAndTimeDialog extends Dialog { } public String getDisplayString(Context context) { - return dateAndTimePicker.getDisplayString(context); + return dateAndTimePicker.getDisplayString(context, false); } public String getDisplayString(Context context, long forDate) { - return DateAndTimePicker.getDisplayString(context, forDate); + return DateAndTimePicker.getDisplayString(context, forDate, false); } } diff --git a/astrid/src/com/todoroo/astrid/ui/DateAndTimePicker.java b/astrid/src/com/todoroo/astrid/ui/DateAndTimePicker.java index 071b55e40..0750bf375 100644 --- a/astrid/src/com/todoroo/astrid/ui/DateAndTimePicker.java +++ b/astrid/src/com/todoroo/astrid/ui/DateAndTimePicker.java @@ -223,18 +223,18 @@ public class DateAndTimePicker extends LinearLayout { this.listener = listener; } - public String getDisplayString(Context context) { + public String getDisplayString(Context context, boolean useNewline) { long dueDate = constructDueDate(); - return getDisplayString(context, dueDate); + return getDisplayString(context, dueDate, useNewline); } - public static String getDisplayString(Context context, long forDate) { + public static String getDisplayString(Context context, long forDate, boolean useNewline) { StringBuilder displayString = new StringBuilder(); Date d = new Date(forDate); if (d.getTime() > 0) { displayString.append(DateUtilities.getDateString(context, d)); if (Task.hasDueTime(forDate)) { - displayString.append(", "); //$NON-NLS-1$ + displayString.append(useNewline ? "\n" : ", "); //$NON-NLS-1$ //$NON-NLS-2$ displayString.append(DateUtilities.getTimeString(context, d)); } } diff --git a/astrid/src/com/todoroo/astrid/ui/DeadlineControlSet.java b/astrid/src/com/todoroo/astrid/ui/DeadlineControlSet.java index 1ca043f89..35f0540e0 100644 --- a/astrid/src/com/todoroo/astrid/ui/DeadlineControlSet.java +++ b/astrid/src/com/todoroo/astrid/ui/DeadlineControlSet.java @@ -15,6 +15,7 @@ import com.todoroo.astrid.data.Task; public class DeadlineControlSet extends PopupControlSet { + private boolean useNewline = false; private final DateAndTimePicker dateAndTimePicker; public DeadlineControlSet(Activity activity, int viewLayout, int displayViewLayout, View...extraViews) { @@ -43,14 +44,14 @@ public class DeadlineControlSet extends PopupControlSet { @Override protected void refreshDisplayView() { TextView dateDisplay = (TextView) getDisplayView().findViewById(R.id.display_row_edit); - String toDisplay = dateAndTimePicker.getDisplayString(activity); + String toDisplay = dateAndTimePicker.getDisplayString(activity, useNewline); dateDisplay.setText(toDisplay); } @Override public void readFromTask(Task task) { long dueDate = task.getValue(Task.DUE_DATE); - dateAndTimePicker.initializeWithDate(dueDate); + initializeWithDate(dueDate); refreshDisplayView(); } @@ -60,4 +61,20 @@ public class DeadlineControlSet extends PopupControlSet { task.setValue(Task.DUE_DATE, dueDate); return null; } + + public void initializeWithDate(long dueDate) { + dateAndTimePicker.initializeWithDate(dueDate); + } + + public boolean isDeadlineSet() { + return dateAndTimePicker.constructDueDate() != 0; + } + + /** + * Set whether date and time should be separated by a newline or a comma + * in the display view + */ + public void setUseNewlineForDisplaySeparator(boolean useNewline) { + this.useNewline = useNewline; + } } diff --git a/astrid/src/com/todoroo/astrid/ui/HideUntilControlSet.java b/astrid/src/com/todoroo/astrid/ui/HideUntilControlSet.java index 9abaefc6c..b846db507 100644 --- a/astrid/src/com/todoroo/astrid/ui/HideUntilControlSet.java +++ b/astrid/src/com/todoroo/astrid/ui/HideUntilControlSet.java @@ -249,7 +249,7 @@ public class HideUntilControlSet extends PopupControlSet implements OnItemSelect task.setValue(Task.HIDE_UNTIL, value); if (value != 0) - return activity.getString(R.string.TEA_hideUntil_message, DateAndTimePicker.getDisplayString(activity, value)); + return activity.getString(R.string.TEA_hideUntil_message, DateAndTimePicker.getDisplayString(activity, value, false)); return null; } diff --git a/astrid/src/com/todoroo/astrid/utility/AstridPreferences.java b/astrid/src/com/todoroo/astrid/utility/AstridPreferences.java index b2631ae79..bb911f8b8 100644 --- a/astrid/src/com/todoroo/astrid/utility/AstridPreferences.java +++ b/astrid/src/com/todoroo/astrid/utility/AstridPreferences.java @@ -35,7 +35,7 @@ public class AstridPreferences { Preferences.setIfUnset(prefs, editor, r, R.string.p_default_hideUntil_key, 0); Preferences.setIfUnset(prefs, editor, r, R.string.p_default_reminders_key, Task.NOTIFY_AT_DEADLINE | Task.NOTIFY_AFTER_DEADLINE); Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_default_random_hours, 0); - Preferences.setIfUnset(prefs, editor, r, R.string.p_fontSize, 20); + Preferences.setIfUnset(prefs, editor, r, R.string.p_fontSize, 18); Preferences.setIfUnset(prefs, editor, r, R.string.p_showNotes, false); editor.commit();