Fixed a few bugs where task either wasn't assigned or assignment was overwritten

pull/14/head
Sam Bosley 13 years ago
parent 58e3c9f9b5
commit eb1b8b60c4

@ -295,6 +295,22 @@ public class EditPeopleControlSet implements TaskEditControlSet {
spinnerValues.add(new AssignedToUser(activity.getString(R.string.actfm_EPA_assign_custom), null));
String assignedStr = task.getValue(Task.USER);
int assignedIndex = 0;
if (!TextUtils.isEmpty(assignedStr)) {
JSONObject assigned = new JSONObject(assignedStr);
long assignedId = assigned.optLong("id", -1);
String assignedEmail = assigned.optString("email");
for (int i = 0; i < spinnerValues.size(); i++) {
JSONObject user = spinnerValues.get(i).user;
if (user != null) {
if (user.optLong("id") == assignedId || (user.optString("email").equals(assignedEmail) && !(TextUtils.isEmpty(assignedEmail))))
assignedIndex = i;
}
}
}
final int selected = assignedIndex;
final ArrayAdapter<AssignedToUser> usersAdapter = new ArrayAdapter<AssignedToUser>(activity,
android.R.layout.simple_spinner_item, spinnerValues);
usersAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
@ -303,6 +319,7 @@ public class EditPeopleControlSet implements TaskEditControlSet {
@Override
public void run() {
assignedSpinner.setAdapter(usersAdapter);
assignedSpinner.setSelection(selected);
}
});
}
@ -384,13 +401,23 @@ public class EditPeopleControlSet implements TaskEditControlSet {
task.setValue(Task.USER, "{}");
} else {
String user = userJson.toString();
dirty = task.getValue(Task.USER).equals(user) ? dirty : true;
JSONObject taskUser = new JSONObject(task.getValue(Task.USER));
long userId = userJson.optLong("id", -1);
String userEmail = userJson.optString("email");
long taskUserId = taskUser.optLong("id", -1);
String taskUserEmail = taskUser.optString("email");
boolean match = (userId == taskUserId && userId != -1);
match = match || (userEmail.equals(taskUserEmail) && !TextUtils.isEmpty(userEmail));
dirty = match ? dirty : true;
task.setValue(Task.USER_ID, userJson.optLong("id", -1));
task.setValue(Task.USER, user);
}
JSONObject sharedWith = parseSharedWithAndTags();
dirty = sharedWith.has("p");
dirty = dirty || sharedWith.has("p");
if(!TextUtils.isEmpty(task.getValue(Task.SHARED_WITH)) || sharedWith.length() != 0)
task.setValue(Task.SHARED_WITH, sharedWith.toString());

Loading…
Cancel
Save