diff --git a/astrid/plugin-src/com/todoroo/astrid/gcal/CreateEventListActivity.java b/astrid/plugin-src/com/todoroo/astrid/gcal/CreateEventListActivity.java index 065c652e7..e3793384f 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gcal/CreateEventListActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/gcal/CreateEventListActivity.java @@ -3,20 +3,35 @@ package com.todoroo.astrid.gcal; import java.util.ArrayList; import java.util.HashMap; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; +import android.widget.ArrayAdapter; import android.widget.Button; +import android.widget.EditText; +import android.widget.ListView; import com.timsu.astrid.R; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.sql.Query; +import com.todoroo.andlib.utility.DialogUtilities; +import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; +import com.todoroo.astrid.activity.TaskListActivity; +import com.todoroo.astrid.activity.TaskListFragment; +import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.dao.UserDao; +import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.User; +import com.todoroo.astrid.service.TagDataService; +import com.todoroo.astrid.tags.TagFilterExposer; public class CreateEventListActivity extends Activity { @@ -25,12 +40,22 @@ public class CreateEventListActivity extends Activity { @Autowired private UserDao userDao; + @Autowired + private TagDataService tagDataService; + + @Autowired + private ActFmPreferenceService actFmPreferenceService; + private ArrayList names; private ArrayList emails; private HashMap emailsToUsers; + private boolean loggedIn; + private Button saveButton; private Button cancelButton; + private ListView membersList; + private EditText tagName; @Override protected void onCreate(Bundle savedInstanceState) { @@ -40,13 +65,20 @@ public class CreateEventListActivity extends Activity { saveButton = (Button) findViewById(R.id.save); cancelButton = (Button) findViewById(R.id.cancel); + tagName = (EditText) findViewById(R.id.list_name); + membersList = (ListView) findViewById(R.id.members_list); Intent intent = getIntent(); names = intent.getStringArrayListExtra(CalendarReminderActivity.TOKEN_NAMES); emails = intent.getStringArrayListExtra(CalendarReminderActivity.TOKEN_EMAILS); + tagName.setText(intent.getStringExtra(TOKEN_LIST_NAME)); + + loggedIn = actFmPreferenceService.isLoggedIn(); initializeUserMap(); + initializeListView(); + addListeners(); } @@ -80,29 +112,68 @@ public class CreateEventListActivity extends Activity { } private void save() { - // Perform save + String name = tagName.getText().toString(); + TagData checkName = tagDataService.getTag(name, TagData.PROPERTIES); + if (checkName != null) { + DialogUtilities.okDialog(this, getString(R.string.CRA_list_exists_title), null); + return; + } + + TagData newTag = new TagData(); + newTag.setValue(TagData.NAME, name); + + if (loggedIn) { // include members + JSONArray membersArray = getMembersArray(); + newTag.setValue(TagData.MEMBERS, membersArray.toString()); + newTag.setValue(TagData.MEMBER_COUNT, membersArray.length()); + } + + tagDataService.save(newTag); + + FilterWithCustomIntent filter = TagFilterExposer.filterFromTagData(this, newTag); + + Intent listIntent = new Intent(this, TaskListActivity.class); + listIntent.putExtra(TaskListFragment.TOKEN_FILTER, filter); + listIntent.putExtras(filter.customExtras); + + startActivity(listIntent); + finish(); + } + + private void initializeListView() { + if (loggedIn) { + ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, android.R.id.text1); + membersList.setAdapter(adapter); + + for (int i = 0; i < emails.size(); i++) { + String email = emails.get(i); + if (email.equals(ActFmPreferenceService.thisUser().optString("email", null))) //$NON-NLS-1$ + continue; + adapter.add(email); + membersList.setItemChecked(i, true); + } + + if (adapter.getCount() == 0) + membersList.setVisibility(View.GONE); + } else { + membersList.setVisibility(View.GONE); + } } - // private void maybeDoStuff() { - // LinearLayout root = (LinearLayout) findViewById(R.id.reminder_root); - // - // for (int i = 0; i < emails.size(); i++) { - // String email = emails.get(i); - // if (email.equals(ActFmPreferenceService.thisUser().optString("email", null))) - // continue; - // String displayString = email; - // if (!TextUtils.isEmpty(names.get(i))) { - // displayString = names.get(i); - // } else if (emailsToUsers.containsKey(email)) { - // User u = emailsToUsers.get(email); - // displayString = u.getDisplayName(); - // } - // - // TextView tv = new TextView(this); - // tv.setText(displayString); - // tv.setTextColor(getResources().getColor(android.R.color.white)); - // root.addView(tv); - // } - // } + private JSONArray getMembersArray() { + JSONArray array = new JSONArray(); + for (int i = 0; i < membersList.getCount(); i++) { + if (membersList.isItemChecked(i)) { + try { + JSONObject member = new JSONObject(); + member.put("email", (String) membersList.getItemAtPosition(i)); //$NON-NLS-1$ + array.put(member); + } catch (JSONException e) { + // ignored + } + } + } + return array; + } } diff --git a/astrid/res/layout/create_event_list_activity.xml b/astrid/res/layout/create_event_list_activity.xml index 6bf96fafb..99f69e89c 100644 --- a/astrid/res/layout/create_event_list_activity.xml +++ b/astrid/res/layout/create_event_list_activity.xml @@ -11,7 +11,11 @@ android:layout_height="50dip" android:hint="@string/CRA_list_name_hint"/> - + List name + + Share with event members +