diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java b/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java index eafe4c02a..e7404a7dd 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java @@ -707,6 +707,57 @@ public class EditPeopleControlSet extends PopupControlSet { if(!TextUtils.isEmpty(assignedCustom.getText())) { userJson = PeopleContainer.createUserJson(assignedCustom); assignedView = assignedCustom; + if (actFmPreferenceService.isLoggedIn()) { + // check if the custom-user is already a member of this list + TodorooCursor tags = TagService.getInstance().getTags(task.getId(), true); + Metadata metadata = new Metadata(); + for(tags.moveToFirst(); !tags.isAfterLast(); tags.moveToNext()) { + metadata.readFromCursor(tags); + final String tag = metadata.getValue(TagService.TAG); + final TagData tagData = tagDataService.getTag(tag, TagData.MEMBER_COUNT, TagData.MEMBERS, TagData.USER); + if(tagData != null) { + String customUserEmail = userJson.optString("email", ""); + final JSONArray membersFromTag = new JSONArray(tagData.getValue(TagData.MEMBERS)); + boolean customUserIsMember = false; + for(int i = 0; i < membersFromTag.length(); i++) { + JSONObject member = membersFromTag.getJSONObject(i); + String email = member.optString("mail", ""); + if (!TextUtils.isEmpty(email) && email.equals(customUserEmail)) { + customUserIsMember = true; + break; + } + } + + if (!customUserIsMember) { + // show dialog to ask if user should be added to the tag-members + final JSONObject newMember = userJson; + DialogInterface.OnClickListener okListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface d, int which) { + membersFromTag.put(newMember); + tagData.setValue(TagData.MEMBERS, membersFromTag.toString()); + tagData.setValue(TagData.MEMBER_COUNT, membersFromTag.length()); + tagDataService.save(tagData); + } + }; + + DialogInterface.OnClickListener cancelListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface d, int which) { + // nothing to do here + } + }; + DialogUtilities.okCancelCustomDialog(activity, + activity.getString(R.string.actfm_EPA_add_person_to_list_title), + activity.getString(R.string.actfm_EPA_add_person_to_list, customUserEmail, customUserEmail), + R.string.actfm_EPA_add_person_to_list_ok, + R.string.actfm_EPA_add_person_to_list_cancel, + android.R.drawable.ic_dialog_alert, + okListener, cancelListener); + } + } + } + } } else { if (!loadedUI || assignedList.getCheckedItemPosition() == ListView.INVALID_POSITION) return true; diff --git a/astrid/res/values-de/strings.xml b/astrid/res/values-de/strings.xml index d0966d782..d69d01ce2 100644 --- a/astrid/res/values-de/strings.xml +++ b/astrid/res/values-de/strings.xml @@ -51,6 +51,10 @@ Sie müssen auf Astrid.com angemeldet sein, um Aufgaben zu teilen. Anmelden Nicht teilen. + Aufgabe zugewiesen + %1$s ist kein Mitglied dieser Liste. Möchten Sie %2$s zu dieser Liste hinzufügen? + Hinzufügen + Nicht hinzufügen Willkommen bei Astrid.com! Astrid.com lässt Sie ihre Aufgaben online abrufen, teilen, und auf andere übertragen. Mit Facebook verbinden diff --git a/astrid/res/values/strings-actfm.xml b/astrid/res/values/strings-actfm.xml index 7e2a5fe98..3310c5867 100644 --- a/astrid/res/values/strings-actfm.xml +++ b/astrid/res/values/strings-actfm.xml @@ -211,7 +211,14 @@ Don\'t share + Task assigned + + %1$s is not shared on this list. Would you like to add %2$s to this list? + Add to list + + Don\'t add +