Merge commit '139ae6c'

pull/14/head
Tim Su 13 years ago
commit 18f1d320e1

@ -0,0 +1,65 @@
package com.todoroo.astrid.gtasks;
import java.io.IOException;
import android.app.Activity;
import android.content.DialogInterface;
import android.text.TextUtils;
import android.widget.EditText;
import android.widget.FrameLayout;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.gtasks.api.GtasksService;
import com.todoroo.astrid.gtasks.auth.GtasksTokenValidator;
public class GtasksListAdder {
@Autowired GtasksPreferenceService gtasksPreferenceService;
@Autowired GtasksListService gtasksListService;
public void showNewListDialog(final Activity activity) {
DependencyInjectionService.getInstance().inject(this);
FrameLayout frame = new FrameLayout(activity);
final EditText editText = new EditText(activity);
frame.addView(editText);
frame.setPadding(10, 0, 10, 0);
DialogUtilities.viewDialog(activity,
activity.getString(R.string.gtasks_FEx_create_list_dialog),
frame, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (gtasksPreferenceService.isLoggedIn() && ! gtasksPreferenceService.isOngoing()) {
new Thread(new Runnable() {
@Override
public void run() {
String token = gtasksPreferenceService.getToken();
token = GtasksTokenValidator.validateAuthToken(token);
GtasksService service = new GtasksService(token);
try {
String title = editText.getText().toString();
if (TextUtils.isEmpty(title)) //Don't create a list without a title
return;
StoreObject newList = gtasksListService.addNewList(service.createGtaskList(title));
if (newList != null) {
FilterWithCustomIntent listFilter = (FilterWithCustomIntent) GtasksFilterExposer.filterFromList(activity, newList);
listFilter.start(activity);
}
} catch (IOException e) {
DialogUtilities.okDialog(activity, activity.getString(R.string.gtasks_FEx_create_list_error), null);
}
}
}).start();
}
}
}, null);
}
}

@ -111,6 +111,30 @@ public class GtasksListService {
clearListCache();
}
public StoreObject addNewList(com.google.api.services.tasks.v1.model.TaskList newList) {
readLists();
if (lists != null) {
for (StoreObject list : lists) {
if (list.getValue(GtasksList.REMOTE_ID).equals(newList.id)) //Sanity check--make sure it's actually a new list
return null;
}
}
StoreObject local = new StoreObject();
local.setValue(StoreObject.TYPE, GtasksList.TYPE);
local.setValue(GtasksList.REMOTE_ID, newList.id);
local.setValue(GtasksList.NAME, newList.title);
int order = lists == null ? 0 : lists.length;
local.setValue(GtasksList.ORDER, order);
storeObjectDao.persist(local);
clearListCache();
return local;
}
private void clearListCache() {
lists = null;
}

@ -13,6 +13,12 @@
<!-- filter title for GTasks lists (%s => list name) -->
<string name="gtasks_FEx_title">Google Tasks: %s</string>
<!-- dialog prompt for creating a new gtasks list -->
<string name="gtasks_FEx_create_list_dialog">New List Name:</string>
<!-- error to show when list creation fails -->
<string name="gtasks_FEx_create_list_error">Error creating new list</string>
<!-- short help title for Gtasks -->
<string name="gtasks_help_title">Welcome to Google Tasks!</string>

@ -36,6 +36,7 @@ import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterCategory;
import com.todoroo.astrid.api.FilterListHeader;
import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.gtasks.GtasksListAdder;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.tags.TagsPlugin;
@ -433,11 +434,12 @@ public class FilterAdapter extends BaseExpandableListAdapter {
viewHolder.selected.setVisibility(View.GONE);
updateForActFm(viewHolder);
updateForGtasks(viewHolder);
}
private void updateForActFm(ViewHolder viewHolder) {
private void setupCustomHeader(ViewHolder viewHolder, String forTitle, View.OnClickListener buttonListener) {
if(viewHolder.item instanceof FilterListHeader &&
viewHolder.item.listingTitle.equals(activity.getString(R.string.tag_FEx_header))) {
viewHolder.item.listingTitle.equals(forTitle)) {
Button add = new Button(activity);
add.setText(R.string.tag_FEx_add_new);
add.setBackgroundResource(android.R.drawable.btn_default_small);
@ -446,13 +448,30 @@ public class FilterAdapter extends BaseExpandableListAdapter {
add.setHeight((int)(35 * metrics.density));
((ViewGroup)viewHolder.view).addView(add);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new TagsPlugin().showNewTagDialog(activity);
}
});
add.setOnClickListener(buttonListener);
}
}
private void updateForActFm(ViewHolder viewHolder) {
setupCustomHeader(viewHolder,
activity.getString(R.string.tag_FEx_header),
new View.OnClickListener() {
@Override
public void onClick(View v) {
new TagsPlugin().showNewTagDialog(activity);
}
});
}
private void updateForGtasks(ViewHolder viewHolder) {
setupCustomHeader(viewHolder,
activity.getString(R.string.gtasks_FEx_header),
new View.OnClickListener() {
@Override
public void onClick(View v) {
new GtasksListAdder().showNewListDialog(activity);
}
});
}
}

Loading…
Cancel
Save