Merge remote-tracking branch 'sbosley/120209_sb_white_list_bg' into 4.0

pull/14/head
Tim Su 13 years ago
commit b215a4f3a6

@ -16,6 +16,7 @@ import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.support.v4.app.Fragment;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -76,6 +77,8 @@ public class EditPeopleControlSet extends PopupControlSet {
@Autowired TagDataService tagDataService; @Autowired TagDataService tagDataService;
private final Fragment fragment;
private final PeopleContainer sharedWithContainer; private final PeopleContainer sharedWithContainer;
private final CheckBox cbFacebook; private final CheckBox cbFacebook;
@ -108,10 +111,11 @@ public class EditPeopleControlSet extends PopupControlSet {
// --- UI initialization // --- 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); super(activity, viewLayout, displayViewLayout, title);
DependencyInjectionService.getInstance().inject(this); DependencyInjectionService.getInstance().inject(this);
this.loginRequestCode = loginRequestCode; this.loginRequestCode = loginRequestCode;
this.fragment = fragment;
displayText.setText(activity.getString(R.string.TEA_control_who)); displayText.setText(activity.getString(R.string.TEA_control_who));
sharedWithRow = LayoutInflater.from(activity).inflate(R.layout.control_set_default_display, null); sharedWithRow = LayoutInflater.from(activity).inflate(R.layout.control_set_default_display, null);
@ -153,8 +157,12 @@ public class EditPeopleControlSet extends PopupControlSet {
@Override @Override
public void readFromTask(Task sourceTask) { public void readFromTask(Task sourceTask) {
task = sourceTask; setTask(sourceTask);
setUpData(); setUpData(task);
}
public void setTask(Task task) {
this.task = task;
} }
public View getSharedWithRow() { public View getSharedWithRow() {
@ -166,7 +174,7 @@ public class EditPeopleControlSet extends PopupControlSet {
} }
@SuppressWarnings("nls") @SuppressWarnings("nls")
private void setUpData() { public void setUpData(final Task task) {
try { try {
JSONObject sharedWith; JSONObject sharedWith;
if(task.getValue(Task.SHARED_WITH).length() > 0) if(task.getValue(Task.SHARED_WITH).length() > 0)
@ -220,7 +228,7 @@ public class EditPeopleControlSet extends PopupControlSet {
if(collaborators.size() > 0) if(collaborators.size() > 0)
buildCollaborators(collaborators); buildCollaborators(collaborators);
buildAssignedToSpinner(sharedPeople); buildAssignedToSpinner(task, sharedPeople);
} catch (JSONException e) { } catch (JSONException e) {
exceptionService.reportError("json-reading-data", e); exceptionService.reportError("json-reading-data", e);
} finally { } finally {
@ -284,13 +292,13 @@ public class EditPeopleControlSet extends PopupControlSet {
} }
@SuppressWarnings("nls") @SuppressWarnings("nls")
private void buildAssignedToSpinner(ArrayList<JSONObject> sharedPeople) throws JSONException { private void buildAssignedToSpinner(Task model, ArrayList<JSONObject> sharedPeople) throws JSONException {
HashSet<Long> userIds = new HashSet<Long>(); HashSet<Long> userIds = new HashSet<Long>();
HashSet<String> emails = new HashSet<String>(); HashSet<String> emails = new HashSet<String>();
HashMap<String, AssignedToUser> names = new HashMap<String, AssignedToUser>(); HashMap<String, AssignedToUser> names = new HashMap<String, AssignedToUser>();
if(task.getValue(Task.USER_ID) > 0) { if(model.getValue(Task.USER_ID) > 0) {
JSONObject user = new JSONObject(task.getValue(Task.USER)); JSONObject user = new JSONObject(model.getValue(Task.USER));
sharedPeople.add(0, user); sharedPeople.add(0, user);
} }
@ -298,8 +306,8 @@ public class EditPeopleControlSet extends PopupControlSet {
myself.put("id", Task.USER_ID_SELF); myself.put("id", Task.USER_ID_SELF);
sharedPeople.add(0, myself); sharedPeople.add(0, myself);
boolean hasTags = task.getTransitory("tags") != null && boolean hasTags = model.getTransitory("tags") != null &&
((HashSet<String>)task.getTransitory("tags")).size() > 0; ((HashSet<String>)model.getTransitory("tags")).size() > 0;
if (actFmPreferenceService.isLoggedIn() && hasTags) { if (actFmPreferenceService.isLoggedIn() && hasTags) {
JSONObject unassigned = new JSONObject(); JSONObject unassigned = new JSONObject();
unassigned.put("id", Task.USER_ID_UNASSIGNED); unassigned.put("id", Task.USER_ID_UNASSIGNED);
@ -347,7 +355,7 @@ public class EditPeopleControlSet extends PopupControlSet {
names.put(name, atu); names.put(name, atu);
} }
String assignedStr = task.getValue(Task.USER); String assignedStr = model.getValue(Task.USER);
int assignedIndex = 0; int assignedIndex = 0;
if (!TextUtils.isEmpty(assignedStr)) { if (!TextUtils.isEmpty(assignedStr)) {
JSONObject assigned = new JSONObject(assignedStr); JSONObject assigned = new JSONObject(assignedStr);
@ -409,8 +417,11 @@ public class EditPeopleControlSet extends PopupControlSet {
} }
} }
private void assignToMe() { public void assignToMe() {
assignedClear.performClick(); if (assignedList != null && assignedList.getChildAt(0) != null) {
assignedList.performItemClick(assignedList.getChildAt(0), 0, 0);
refreshDisplayView();
}
} }
private void setUpListeners() { private void setUpListeners() {
@ -542,7 +553,7 @@ public class EditPeopleControlSet extends PopupControlSet {
DialogInterface.OnClickListener okListener = new DialogInterface.OnClickListener() { DialogInterface.OnClickListener okListener = new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface d, int which) { public void onClick(DialogInterface d, int which) {
activity.startActivityForResult(new Intent(activity, ActFmLoginActivity.class), fragment.startActivityForResult(new Intent(activity, ActFmLoginActivity.class),
loginRequestCode); loginRequestCode);
} }
}; };
@ -588,10 +599,9 @@ public class EditPeopleControlSet extends PopupControlSet {
} }
private void makePrivateTask() { private void makePrivateTask() {
assignToMe();
sharedWithContainer.removeAllViews(); sharedWithContainer.removeAllViews();
sharedWithContainer.addPerson(""); //$NON-NLS-1$ sharedWithContainer.addPerson(""); //$NON-NLS-1$
refreshDisplayView(); assignToMe();
} }
private void showSaveToast(String saveToast) { private void showSaveToast(String saveToast) {
@ -700,6 +710,26 @@ public class EditPeopleControlSet extends PopupControlSet {
return assignedToMe; 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() { public String getAssignedToString() {
return assignedDisplay.getText().toString(); return assignedDisplay.getText().toString();
} }

@ -324,6 +324,10 @@ public class RepeatControlSet extends PopupControlSet {
return null; return null;
} }
public boolean isRecurrenceSet() {
return doRepeat;
}
@Override @Override
protected void refreshDisplayView() { protected void refreshDisplayView() {
TextView repeatDisplay = (TextView) getDisplayView().findViewById(R.id.display_row_edit); TextView repeatDisplay = (TextView) getDisplayView().findViewById(R.id.display_row_edit);

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

@ -3,7 +3,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/list_popover_bg" android:background="?attr/asListPopoverBg"
android:orientation="vertical"> android:orientation="vertical">

@ -17,7 +17,7 @@
<View <View
android:layout_width="1px" android:layout_width="1px"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#000000"/> android:background="?attr/asSeparatorBackground"/>
<!-- Task List --> <!-- Task List -->
<FrameLayout <FrameLayout
@ -29,7 +29,7 @@
<View <View
android:layout_width="1px" android:layout_width="1px"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#000000"/> android:background="?attr/asSeparatorBackground"/>
<!-- Task Edit --> <!-- Task Edit -->
<FrameLayout <FrameLayout

@ -17,7 +17,7 @@
android:id="@+id/display_row_title" android:id="@+id/display_row_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginRight="15dip" android:layout_marginRight="10dip"
style="@style/TextAppearance.GEN_EditLabel" /> style="@style/TextAppearance.GEN_EditLabel" />
<TextView <TextView
android:id="@+id/display_row_edit" android:id="@+id/display_row_edit"

@ -3,7 +3,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/list_popover_bg" android:background="?attr/asListPopoverBg"
android:orientation="vertical"> android:orientation="vertical">

@ -17,7 +17,7 @@
android:layout_height="27dip" android:layout_height="27dip"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:layout_marginBottom="-8dip" android:layout_marginBottom="-8dip"
android:src="@drawable/list_arrow_up" /> android:src="?attr/asListArrowUp" />
<ImageView <ImageView
android:id="@+id/gdi_arrow_down" android:id="@+id/gdi_arrow_down"
@ -25,7 +25,6 @@
android:layout_height="27dip" android:layout_height="27dip"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:layout_marginBottom="-8dip" android:layout_marginBottom="-8dip"
android:layout_below="@android:id/list" android:layout_below="@android:id/list" />
android:src="@drawable/list_arrow_down" />
</RelativeLayout> </RelativeLayout>

@ -9,7 +9,7 @@
android:id="@+id/content" android:id="@+id/content"
android:layout_width="280dip" android:layout_width="280dip"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/list_popover_bg" android:background="?attr/asListPopoverBg"
android:orientation="vertical" android:orientation="vertical"
android:layout_below="@+id/gdi_arrow_up"/> android:layout_below="@+id/gdi_arrow_up"/>
@ -20,7 +20,7 @@
android:layout_marginLeft="-10dip" android:layout_marginLeft="-10dip"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:layout_marginBottom="-8dip" android:layout_marginBottom="-8dip"
android:src="@drawable/list_arrow_up" /> android:src="?attr/asListArrowUp" />
<ImageView <ImageView
android:id="@+id/gdi_arrow_down" android:id="@+id/gdi_arrow_down"
@ -28,7 +28,6 @@
android:layout_height="27dip" android:layout_height="27dip"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:layout_marginBottom="-8dip" android:layout_marginBottom="-8dip"
android:layout_below="@android:id/list" android:layout_below="@android:id/list"/>
android:src="@drawable/list_arrow_down" />
</RelativeLayout> </RelativeLayout>

@ -4,6 +4,9 @@
android:id="@+id/taskListParent" android:id="@+id/taskListParent"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:descendantFocusability="beforeDescendants"
style="@style/Content" style="@style/Content"
android:orientation="vertical"> android:orientation="vertical">
@ -18,60 +21,94 @@
<!-- Body goes here --> <!-- Body goes here -->
<!-- Footer --> <!-- Footer -->
<LinearLayout <LinearLayout
android:id="@+id/taskListFooter" android:id="@+id/taskListFooter"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="50dip"
android:layout_weight="1" android:layout_weight="1"
android:padding="3dip" android:orientation="vertical"
android:paddingBottom="5dip"
android:gravity="center_vertical"
android:orientation="horizontal"
style="@style/Content"> style="@style/Content">
<!-- Voice Add Button -->
<ImageButton android:id="@+id/voiceAddButton"
android:layout_width="39dip"
android:layout_height="39dip"
android:layout_gravity="top"
android:layout_marginLeft="5dip"
android:layout_marginRight="3dip"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:layout_weight="1"
android:visibility="gone"
android:background="@android:color/transparent"
android:src="?attr/asMicButtonImg"
android:scaleType="center"/>
<!-- Quick Add Task -->
<EditText android:id="@+id/quickAddText"
android:layout_width="wrap_content"
android:layout_height="39dip"
android:layout_marginRight="8dip"
android:layout_marginLeft="5dip"
android:layout_marginBottom="2dip"
android:layout_weight="100"
android:paddingLeft="5dip"
android:background="@drawable/edit_title_background"
android:hint="@string/TLA_quick_add_hint"
android:textSize="16sp"
android:autoText="true"
android:textColor="@android:color/black"
android:capitalize="sentences"/>
<!-- Extended Add Button --> <LinearLayout
<ImageButton android:id="@+id/quickAddButton" android:id="@+id/taskListQuickaddControlsContainer"
android:layout_width="39dip" android:layout_width="fill_parent"
android:layout_height="39dip" android:layout_height="wrap_content"
android:layout_gravity="top" android:orientation="vertical"
android:layout_marginRight="5dip" android:visibility="gone">
android:layout_weight="1"
android:background="@android:color/transparent" <View
android:src="?attr/asAddButtonImg" android:layout_width="fill_parent"
android:scaleType="center"/> android:layout_height="1px"
android:background="?attr/asSeparatorBackground"/>
<LinearLayout
android:id="@+id/taskListQuickaddControls"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="horizontal">
<View
android:layout_height="fill_parent"
android:layout_width="1px"
android:background="?attr/asSeparatorBackground"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="50dip"
android:padding="3dip"
android:paddingBottom="5dip"
android:gravity="center_vertical"
android:orientation="horizontal">
<!-- Voice Add Button -->
<ImageButton android:id="@+id/voiceAddButton"
android:layout_width="39dip"
android:layout_height="39dip"
android:layout_gravity="top"
android:layout_marginLeft="5dip"
android:layout_marginRight="3dip"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:layout_weight="1"
android:visibility="gone"
android:background="@android:color/transparent"
android:src="?attr/asMicButtonImg"
android:scaleType="center"/>
<!-- Quick Add Task -->
<EditText android:id="@+id/quickAddText"
android:layout_width="wrap_content"
android:layout_height="39dip"
android:layout_marginRight="8dip"
android:layout_marginLeft="5dip"
android:layout_marginBottom="2dip"
android:layout_weight="100"
android:paddingLeft="5dip"
android:background="@drawable/edit_title_background"
android:hint="@string/TLA_quick_add_hint"
android:textSize="16sp"
android:autoText="true"
android:textColor="@android:color/black"
android:capitalize="sentences"/>
<!-- Extended Add Button -->
<ImageButton android:id="@+id/quickAddButton"
android:layout_width="39dip"
android:layout_height="39dip"
android:layout_gravity="top"
android:layout_marginRight="5dip"
android:layout_weight="1"
android:background="@android:color/transparent"
android:src="?attr/asAddButtonImg"
android:scaleType="center"/>
</LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

@ -17,7 +17,7 @@
<View <View
android:layout_width="1px" android:layout_width="1px"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#000000"/> android:background="?attr/asSeparatorBackground"/>
<!-- Task List --> <!-- Task List -->
<FrameLayout <FrameLayout
@ -29,7 +29,7 @@
<View <View
android:layout_width="1px" android:layout_width="1px"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#000000"/> android:background="?attr/asSeparatorBackground"/>
<!-- Task Edit --> <!-- Task Edit -->
<FrameLayout <FrameLayout

@ -29,6 +29,8 @@
<attr name="asRepeatIcon" format="reference" /> <attr name="asRepeatIcon" format="reference" />
<attr name="asMainMenu" format="reference" /> <attr name="asMainMenu" format="reference" />
<attr name="asAbBackgroundColor" format="color"/> <attr name="asAbBackgroundColor" format="color"/>
<attr name="asListPopoverBg" format="reference"/>
<attr name="asListArrowUp" format="reference"/>
<declare-styleable name="ContactsAutoComplete"> <declare-styleable name="ContactsAutoComplete">
<attr name="allowMultiple" format="boolean"/> <attr name="allowMultiple" format="boolean"/>

@ -30,7 +30,7 @@
<color name="red_theme_color">#d90000</color> <color name="red_theme_color">#d90000</color>
<color name="dark_blue_theme_color">#1f78b4</color> <color name="dark_blue_theme_color">#1f78b4</color>
<color name="tablet_list_bg">#292929</color> <color name="tablet_list_bg">#292929</color>
<color name="tablet_list_selected">#101010</color> <color name="tablet_list_selected">#000000</color>
<color name="reminder_background">#262626</color> <color name="reminder_background">#262626</color>
</resources> </resources>

@ -31,6 +31,8 @@
<item name="asAbBackgroundColor">#000000</item> <item name="asAbBackgroundColor">#000000</item>
<item name="asTaskEditArrow">@drawable/taskedit_arrow_up_white</item> <item name="asTaskEditArrow">@drawable/taskedit_arrow_up_white</item>
<item name="asRepeatIcon">@drawable/icn_edit_repeats_blue</item> <item name="asRepeatIcon">@drawable/icn_edit_repeats_blue</item>
<item name="asListPopoverBg">@drawable/list_popover_bg_white</item>
<item name="asListArrowUp">@drawable/list_arrow_up_white</item>
<!-- actionbar-styling --> <!-- actionbar-styling -->
<item name="abBackground">@drawable/header_blue</item> <item name="abBackground">@drawable/header_blue</item>
@ -74,6 +76,8 @@
<item name="asTaskEditArrow">@drawable/taskedit_arrow_up_white</item> <item name="asTaskEditArrow">@drawable/taskedit_arrow_up_white</item>
<item name="asRepeatIcon">@drawable/icn_edit_repeats_red</item> <item name="asRepeatIcon">@drawable/icn_edit_repeats_red</item>
<item name="asAbBackgroundColor">#ffffff</item> <item name="asAbBackgroundColor">#ffffff</item>
<item name="asListPopoverBg">@drawable/list_popover_bg</item>
<item name="asListArrowUp">@drawable/list_arrow_up</item>
<!-- actionbar-styling --> <!-- actionbar-styling -->
<item name="abBackground">@drawable/header_red</item> <item name="abBackground">@drawable/header_red</item>
@ -337,6 +341,10 @@
<style name="TextAppearance.FLA_Filter"> <style name="TextAppearance.FLA_Filter">
<item name="android:textSize">18sp</item> <item name="android:textSize">18sp</item>
<item name="android:textStyle">bold</item> <item name="android:textStyle">bold</item>
<item name="android:textColor">?attr/asTextColorInverse</item>
</style>
<style name="TextAppearance.FLA_Filter_Tablet" parent="TextAppearance.FLA_Filter">
<item name="android:textColor">@android:color/white</item> <item name="android:textColor">@android:color/white</item>
</style> </style>

@ -213,6 +213,7 @@ public class AstridActivity extends FragmentActivity
}); });
} catch (Exception e) { } catch (Exception e) {
// Don't worry about it // Don't worry about it
e.printStackTrace();
} }
} }

@ -150,7 +150,7 @@ public final class TaskEditFragment extends Fragment implements
// --- request codes // --- 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; private static final int REQUEST_VOICE_RECOG = 1;
// --- menu codes // --- menu codes
@ -505,7 +505,7 @@ public final class TaskEditFragment extends Fragment implements
// EditPeopleControlSet relies on the "tags" transitory created by the // EditPeopleControlSet relies on the "tags" transitory created by the
// TagsControlSet, so we put the tags control before the people control // 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_assigned,
R.layout.control_set_default_display, R.layout.control_set_default_display,
R.string.actfm_EPA_assign_label, REQUEST_LOG_IN)); R.string.actfm_EPA_assign_label, REQUEST_LOG_IN));

@ -41,11 +41,15 @@ import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.View.OnKeyListener; import android.view.View.OnKeyListener;
import android.view.View.OnLongClickListener; import android.view.View.OnLongClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager; import android.view.WindowManager;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
@ -55,6 +59,7 @@ import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener; 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.sql.QueryTemplate;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.andlib.widget.GestureService; import com.todoroo.andlib.widget.GestureService;
import com.todoroo.andlib.widget.GestureService.GestureInterface; import com.todoroo.andlib.widget.GestureService.GestureInterface;
import com.todoroo.astrid.actfm.ActFmLoginActivity; import com.todoroo.astrid.actfm.ActFmLoginActivity;
import com.todoroo.astrid.actfm.EditPeopleControlSet;
import com.todoroo.astrid.actfm.TagUpdatesActivity; import com.todoroo.astrid.actfm.TagUpdatesActivity;
import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.activity.SortSelectionActivity.OnSortSelectedListener; import com.todoroo.astrid.activity.SortSelectionActivity.OnSortSelectedListener;
import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.adapter.TaskAdapter.OnCompletedTaskListener; 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.Metadata;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalControlSet;
import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.helper.MetadataHelper; import com.todoroo.astrid.helper.MetadataHelper;
import com.todoroo.astrid.helper.ProgressBarSyncResultCallback; import com.todoroo.astrid.helper.ProgressBarSyncResultCallback;
import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader; import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader;
import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader.ContextMenuItem; import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader.ContextMenuItem;
import com.todoroo.astrid.reminders.ReminderDebugContextActions; import com.todoroo.astrid.reminders.ReminderDebugContextActions;
import com.todoroo.astrid.repeats.RepeatControlSet;
import com.todoroo.astrid.service.AddOnService; import com.todoroo.astrid.service.AddOnService;
import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.AstridDependencyInjector;
import com.todoroo.astrid.service.MetadataService; 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.SyncResultCallback;
import com.todoroo.astrid.sync.SyncV2Provider; import com.todoroo.astrid.sync.SyncV2Provider;
import com.todoroo.astrid.ui.DateChangedAlerts; import com.todoroo.astrid.ui.DateChangedAlerts;
import com.todoroo.astrid.ui.DeadlineControlSet;
import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.AstridPreferences;
import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
@ -199,6 +210,9 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
@Autowired @Autowired
TagDataService tagDataService; TagDataService tagDataService;
@Autowired
ActFmPreferenceService actFmPreferenceService;
private final TaskContextActionExposer[] contextItemExposers = new TaskContextActionExposer[] { private final TaskContextActionExposer[] contextItemExposers = new TaskContextActionExposer[] {
new ReminderDebugContextActions.MakeNotification(), new ReminderDebugContextActions.MakeNotification(),
new ReminderDebugContextActions.WhenReminder(), }; new ReminderDebugContextActions.WhenReminder(), };
@ -216,6 +230,8 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
private ImageButton voiceAddButton; private ImageButton voiceAddButton;
private ImageButton quickAddButton; private ImageButton quickAddButton;
private EditText quickAddBox; private EditText quickAddBox;
private LinearLayout quickAddControls;
private View quickAddControlsContainer;
private Timer backgroundTimer; private Timer backgroundTimer;
private final LinkedHashSet<SyncAction> syncActions = new LinkedHashSet<SyncAction>(); private final LinkedHashSet<SyncAction> syncActions = new LinkedHashSet<SyncAction>();
private boolean isFilter; private boolean isFilter;
@ -229,6 +245,11 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
protected OnTaskListItemClickedListener mListener; protected OnTaskListItemClickedListener mListener;
private boolean mDualFragments = false; private boolean mDualFragments = false;
private DeadlineControlSet deadlineControl;
private RepeatControlSet repeatControl;
private GCalControlSet gcalControl;
private EditPeopleControlSet peopleControl;
/* /*
* ====================================================================== * ======================================================================
* ======================================================= initialization * ======================================================= 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 // set listener for pressing enter in quick-add box
quickAddBox = (EditText) getView().findViewById(R.id.quickAddText); quickAddBox = (EditText) getView().findViewById(R.id.quickAddText);
quickAddBox.setOnEditorActionListener(new OnEditorActionListener() { 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( quickAddButton = ((ImageButton) getView().findViewById(
R.id.quickAddButton)); R.id.quickAddButton));
@ -595,6 +635,44 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
getView().findViewById(R.id.progressBar).setVisibility(View.GONE); 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 // Subclasses can override these to customize extras in quickadd intent
protected Intent getOnClickQuickAddIntent(Task t) { protected Intent getOnClickQuickAddIntent(Task t) {
Intent intent = new Intent(getActivity(), TaskEditActivity.class); Intent intent = new Intent(getActivity(), TaskEditActivity.class);
@ -1076,9 +1154,42 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
try { try {
if (title != null) if (title != null)
title = title.trim(); 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, Task task = createWithValues(filter.valuesForNewTasks, title,
taskService, metadataService); 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 boolean gcalCreateEventEnabled = Preferences.getStringValue(R.string.gcal_p_default) != null
&& !Preferences.getStringValue(R.string.gcal_p_default).equals( && !Preferences.getStringValue(R.string.gcal_p_default).equals(
"-1"); "-1");

@ -39,6 +39,7 @@ import com.timsu.astrid.R;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.activity.FilterListFragment; import com.todoroo.astrid.activity.FilterListFragment;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.AstridFilterExposer; import com.todoroo.astrid.api.AstridFilterExposer;
@ -116,6 +117,9 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
this.skipIntentFilters = skipIntentFilters; this.skipIntentFilters = skipIntentFilters;
this.selectable = selectable; this.selectable = selectable;
if (((AstridActivity) activity).getFragmentLayout() != AstridActivity.LAYOUT_SINGLE)
filterStyle = R.style.TextAppearance_FLA_Filter_Tablet;
inflater = (LayoutInflater) activity.getSystemService( inflater = (LayoutInflater) activity.getSystemService(
Context.LAYOUT_INFLATER_SERVICE); Context.LAYOUT_INFLATER_SERVICE);

@ -207,7 +207,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
this.fragment = fragment; this.fragment = fragment;
this.onCompletedTaskListener = onCompletedTaskListener; this.onCompletedTaskListener = onCompletedTaskListener;
fontSize = Preferences.getIntegerFromString(R.string.p_fontSize, 20); fontSize = Preferences.getIntegerFromString(R.string.p_fontSize, 18);
paint = new Paint(); paint = new Paint();
displayMetrics = new DisplayMetrics(); displayMetrics = new DisplayMetrics();
fragment.getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); fragment.getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
@ -923,7 +923,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
@Override @Override
public void notifyDataSetChanged() { public void notifyDataSetChanged() {
super.notifyDataSetChanged(); super.notifyDataSetChanged();
fontSize = Preferences.getIntegerFromString(R.string.p_fontSize, 20); fontSize = Preferences.getIntegerFromString(R.string.p_fontSize, 18);
} }

@ -93,10 +93,10 @@ public class DateAndTimeDialog extends Dialog {
} }
public String getDisplayString(Context context) { public String getDisplayString(Context context) {
return dateAndTimePicker.getDisplayString(context); return dateAndTimePicker.getDisplayString(context, false);
} }
public String getDisplayString(Context context, long forDate) { public String getDisplayString(Context context, long forDate) {
return DateAndTimePicker.getDisplayString(context, forDate); return DateAndTimePicker.getDisplayString(context, forDate, false);
} }
} }

@ -223,18 +223,18 @@ public class DateAndTimePicker extends LinearLayout {
this.listener = listener; this.listener = listener;
} }
public String getDisplayString(Context context) { public String getDisplayString(Context context, boolean useNewline) {
long dueDate = constructDueDate(); 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(); StringBuilder displayString = new StringBuilder();
Date d = new Date(forDate); Date d = new Date(forDate);
if (d.getTime() > 0) { if (d.getTime() > 0) {
displayString.append(DateUtilities.getDateString(context, d)); displayString.append(DateUtilities.getDateString(context, d));
if (Task.hasDueTime(forDate)) { 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)); displayString.append(DateUtilities.getTimeString(context, d));
} }
} }

@ -15,6 +15,7 @@ import com.todoroo.astrid.data.Task;
public class DeadlineControlSet extends PopupControlSet { public class DeadlineControlSet extends PopupControlSet {
private boolean useNewline = false;
private final DateAndTimePicker dateAndTimePicker; private final DateAndTimePicker dateAndTimePicker;
public DeadlineControlSet(Activity activity, int viewLayout, int displayViewLayout, View...extraViews) { public DeadlineControlSet(Activity activity, int viewLayout, int displayViewLayout, View...extraViews) {
@ -43,14 +44,14 @@ public class DeadlineControlSet extends PopupControlSet {
@Override @Override
protected void refreshDisplayView() { protected void refreshDisplayView() {
TextView dateDisplay = (TextView) getDisplayView().findViewById(R.id.display_row_edit); TextView dateDisplay = (TextView) getDisplayView().findViewById(R.id.display_row_edit);
String toDisplay = dateAndTimePicker.getDisplayString(activity); String toDisplay = dateAndTimePicker.getDisplayString(activity, useNewline);
dateDisplay.setText(toDisplay); dateDisplay.setText(toDisplay);
} }
@Override @Override
public void readFromTask(Task task) { public void readFromTask(Task task) {
long dueDate = task.getValue(Task.DUE_DATE); long dueDate = task.getValue(Task.DUE_DATE);
dateAndTimePicker.initializeWithDate(dueDate); initializeWithDate(dueDate);
refreshDisplayView(); refreshDisplayView();
} }
@ -60,4 +61,20 @@ public class DeadlineControlSet extends PopupControlSet {
task.setValue(Task.DUE_DATE, dueDate); task.setValue(Task.DUE_DATE, dueDate);
return null; 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;
}
} }

@ -249,7 +249,7 @@ public class HideUntilControlSet extends PopupControlSet implements OnItemSelect
task.setValue(Task.HIDE_UNTIL, value); task.setValue(Task.HIDE_UNTIL, value);
if (value != 0) 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; return null;
} }

@ -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_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_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_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); Preferences.setIfUnset(prefs, editor, r, R.string.p_showNotes, false);
editor.commit(); editor.commit();

Loading…
Cancel
Save