/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.gtasks;
import java.io.IOException;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
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.GtasksInvoker;
import com.todoroo.astrid.gtasks.auth.GtasksTokenValidator;
public class GtasksListAdder extends Activity {
@Autowired GtasksPreferenceService gtasksPreferenceService;
@Autowired GtasksListService gtasksListService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
showNewListDialog(this);
}
private 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);
DialogInterface.OnClickListener onClick = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (gtasksPreferenceService.isLoggedIn() && ! gtasksPreferenceService.isOngoing()) {
final ProgressDialog pd = DialogUtilities.progressDialog(GtasksListAdder.this,
GtasksListAdder.this.getString(R.string.gtasks_FEx_creating_list));
pd.show();
new Thread(new Runnable() {
@Override
public void run() {
String token = gtasksPreferenceService.getToken();
try {
token = GtasksTokenValidator.validateAuthToken(activity, token);
GtasksInvoker service = new GtasksInvoker(token);
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, 0);
}
} catch (IOException e) {
DialogUtilities.okDialog(activity, activity.getString(R.string.gtasks_FEx_create_list_error), null);
} finally {
pd.dismiss();
finish();
}
}
}).start();
}
}
};
DialogInterface.OnClickListener onCancel = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
};
DialogUtilities.viewDialog(activity,
activity.getString(R.string.gtasks_FEx_create_list_dialog),
frame, onClick, onCancel);
}
}