package com.redditandroiddevelopers.googletasksclient;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.format.DateUtils;
import android.util.Log;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.api.client.extensions.android2.AndroidHttp;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.extensions.android2.auth.GoogleAccountManager;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.json.JsonHttpRequest;
import com.google.api.client.http.json.JsonHttpRequestInitializer;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;
import com.google.api.services.tasks.Tasks;
import com.google.api.services.tasks.Tasks.TasksOperations.Insert;
import com.google.api.services.tasks.TasksRequest;
import com.google.api.services.tasks.model.Task;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
public class detailTasks extends SherlockActivity{
String title;
String id;
com.google.api.services.tasks.Tasks service;
final HttpTransport transport = AndroidHttp.newCompatibleTransport();
final JsonFactory jsonFactory = new JacksonFactory();
GoogleCredential credential = new GoogleCredential();
GoogleAccountManager accountManager;
private static final String TAG = "Reddit Google Tasks";
private static final Level LOGGING_LEVEL = Level.OFF;
String accountName;
AddTaskActivity newActivity;
Task newTask;
String timeagoString;
String notesString;
String idNotes;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//add menu items to the action bar. look on onOptionsItemSelected to action code.
menu.add(0,0,0,"Delete note");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case 0:
{
//delete notes
new deleteTask().execute();
finish();
return true;
}
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
Bundle bundle = this.getIntent().getExtras();
title = bundle.getString("title");
id = bundle.getString("taskID");
getSupportActionBar().setTitle(title);
setContentView(R.layout.detail);
service = com.google.api.services.tasks.Tasks.builder(transport, jsonFactory)
.setApplicationName("RedditGoogleTasks/1.0")
.setHttpRequestInitializer(credential)
.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
public void initialize(JsonHttpRequest request) throws IOException {
TasksRequest tasksRequest = (TasksRequest) request;
tasksRequest.setKey(ClientCredentials.KEY);
}
})
.build();
//get the accountName and authToken from sharedPreferences settings
String PREF_ACCOUNT_NAME = settings.getString("accountName", null);
String PREF_AUTH_TOKEN = settings.getString("authToken", null);
Log.v(TAG, "PREF_ACCOUNT_NAME =" + PREF_ACCOUNT_NAME);
Log.v(TAG, "PREF_AUTH_TOKEN =" + PREF_AUTH_TOKEN);
accountName = PREF_ACCOUNT_NAME;
credential.setAccessToken(PREF_AUTH_TOKEN);
Logger.getLogger("com.google.api.client").setLevel(LOGGING_LEVEL);
accountManager = new GoogleAccountManager(getApplicationContext());
new getTask().execute();
}
public class getTask extends AsyncTask<Void, Void, Void> {
/*
protected void onPostExecute(Task result) {
}
*/
ProgressBar progressView = (ProgressBar)findViewById(R.id.marker_progress);
TextView noteTextNew = (TextView)findViewById(R.id.noteText);
TextView updatedTextNew = (TextView)findViewById(R.id.timeAgoText);
protected void onPostExecute(Void result) {
//hide progressbar
progressView.setVisibility(ProgressBar.GONE);
//show notes element
noteTextNew.setVisibility(TextView.VISIBLE);
updatedTextNew.setVisibility(TextView.VISIBLE);
updatedTextNew.setText(timeagoString);
noteTextNew.setText(notesString);
return;
}
@Override
protected Void doInBackground(Void... params) {
//show progress bar
progressView.setVisibility(ProgressBar.VISIBLE);
//hide notes element
noteTextNew.setVisibility(TextView.GONE);
updatedTextNew.setVisibility(TextView.GONE);
try {
Task result = service.tasks().get("@default", id).execute();
newTask = result;
Log.v("", "task = " + result.toString());
Log.v("", "update time = " + result.getUpdated().toString());
Log.v("", "NOTES = " + result.getNotes());
notesString = result.getNotes();
//use timeAgo twitter style date
long longDate= result.getUpdated().getValue();
CharSequence timeago = DateUtils.getRelativeTimeSpanString(longDate);
timeagoString = timeago.toString();
idNotes = result.getId();
//noteTextNew.setText(result.getNotes());
Log.v("", "update time = " + timeagoString);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
public class deleteTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
try {
service.tasks().delete("@default", idNotes).execute();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
}