From 0e613f9017f2160100800138314f52c02955a706 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Mon, 30 Apr 2012 13:36:24 -0700 Subject: [PATCH] Wire up call later button to create tasks with the appropriate due time --- .../astrid/calls/MissedCallActivity.java | 28 +++++++++++++++---- .../calls/PhoneStateChangedReceiver.java | 13 +++++++-- astrid/res/values/strings-core.xml | 16 ++++++++--- 3 files changed, 45 insertions(+), 12 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/calls/MissedCallActivity.java b/astrid/plugin-src/com/todoroo/astrid/calls/MissedCallActivity.java index 32a302334..32fcc6ab9 100644 --- a/astrid/plugin-src/com/todoroo/astrid/calls/MissedCallActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/calls/MissedCallActivity.java @@ -1,7 +1,5 @@ package com.todoroo.astrid.calls; -import java.util.Date; - import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; @@ -15,19 +13,26 @@ import android.view.View.OnClickListener; import android.widget.TextView; import com.timsu.astrid.R; +import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; +import com.todoroo.astrid.data.Task; import com.todoroo.astrid.reminders.NotificationFragment.SnoozeDialog; import com.todoroo.astrid.reminders.SnoozeCallback; +import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.ThemeService; public class MissedCallActivity extends Activity { public static final String EXTRA_NUMBER = "number"; //$NON-NLS-1$ public static final String EXTRA_NAME = "name"; //$NON-NLS-1$ + public static final String EXTRA_TIME = "time"; //$NON-NLS-1$ + + private static final String PREF_IGNORE_PRESSES = "missedCallsIgnored"; //$NON-NLS-1$ - private static final String PREF_IGNORE_PRESSES = "missedCallsIgnored"; + @Autowired private TaskService taskService; private final OnClickListener dismissListener = new OnClickListener() { @Override @@ -72,6 +77,7 @@ public class MissedCallActivity extends Activity { private String name; private String number; + private String timeString; private TextView returnCallButton; private TextView callLaterButton; @@ -81,6 +87,7 @@ public class MissedCallActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + DependencyInjectionService.getInstance().inject(this); setContentView(R.layout.missed_call_activity); @@ -88,6 +95,7 @@ public class MissedCallActivity extends Activity { name = intent.getStringExtra(EXTRA_NAME); number = intent.getStringExtra(EXTRA_NUMBER); + timeString = intent.getStringExtra(EXTRA_TIME); int color = ThemeService.getThemeColor(); @@ -95,6 +103,7 @@ public class MissedCallActivity extends Activity { callLaterButton = (TextView) findViewById(R.id.call_later); ignoreButton = (TextView) findViewById(R.id.call_ignore); dismissButton = findViewById(R.id.dismiss); + ((TextView) findViewById(R.id.reminder_title)).setText(getString(R.string.MCA_title, timeString)); Resources r = getResources(); returnCallButton.setBackgroundColor(r.getColor(color)); @@ -135,8 +144,17 @@ public class MissedCallActivity extends Activity { SnoozeDialog sd = new SnoozeDialog(MissedCallActivity.this, new SnoozeCallback() { @Override public void snoozeForTime(long time) { - // Create task with due time 'time' - System.err.println("Should create a task for: " + new Date(time)); + String title; + if (TextUtils.isEmpty(name)) + title = getString(R.string.MCA_task_title_no_name, number); + else + title = getString(R.string.MCA_task_title_name, name, number); + + Task newTask = new Task(); + newTask.setValue(Task.TITLE, title); + newTask.setValue(Task.DUE_DATE, time); + taskService.save(newTask); + finish(); } }); diff --git a/astrid/plugin-src/com/todoroo/astrid/calls/PhoneStateChangedReceiver.java b/astrid/plugin-src/com/todoroo/astrid/calls/PhoneStateChangedReceiver.java index e98d26212..86d8a59bf 100644 --- a/astrid/plugin-src/com/todoroo/astrid/calls/PhoneStateChangedReceiver.java +++ b/astrid/plugin-src/com/todoroo/astrid/calls/PhoneStateChangedReceiver.java @@ -1,5 +1,7 @@ package com.todoroo.astrid.calls; +import java.util.Date; + import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -9,6 +11,7 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import com.timsu.astrid.R; +import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.Preferences; @SuppressWarnings("nls") @@ -50,12 +53,16 @@ public class PhoneStateChangedReceiver extends BroadcastReceiver { if (calls.getCount() > 0) { calls.moveToFirst(); int nameIndex = calls.getColumnIndex(Calls.CACHED_NAME); - String name = ""; - if (nameIndex > -1) - name = calls.getString(nameIndex); + String name = calls.getString(nameIndex); + + int timeIndex = calls.getColumnIndex(Calls.DATE); + long time = calls.getLong(timeIndex); + String timeString = DateUtilities.getTimeString(context, new Date(time)); + Intent missedCallIntent = new Intent(context, MissedCallActivity.class); missedCallIntent.putExtra(MissedCallActivity.EXTRA_NUMBER, lastNumber); missedCallIntent.putExtra(MissedCallActivity.EXTRA_NAME, name); + missedCallIntent.putExtra(MissedCallActivity.EXTRA_TIME, timeString); missedCallIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(missedCallIntent); } diff --git a/astrid/res/values/strings-core.xml b/astrid/res/values/strings-core.xml index fde4d98df..274506811 100644 --- a/astrid/res/values/strings-core.xml +++ b/astrid/res/values/strings-core.xml @@ -465,8 +465,8 @@ - - Missed call! + + Missed call at %s Call now @@ -478,10 +478,10 @@ Ignore - %s just called you! + %s just called. What do you want to do? - Someone just called you from %s. + Someone just called you from %s. What do you want to do? Ignore all missed calls? @@ -500,6 +500,14 @@ Astrid will notify you about missed calls and offer to remind you to call back + + + Call %1$s back at %2$s + + + Call %s back + +