diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/SyncUpgradePrompt.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/SyncUpgradePrompt.java new file mode 100644 index 000000000..58218356e --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/SyncUpgradePrompt.java @@ -0,0 +1,82 @@ +package com.todoroo.astrid.actfm.sync; + +import android.app.Activity; +import android.app.Dialog; +import android.util.TypedValue; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.TextView; + +import com.timsu.astrid.R; +import com.todoroo.andlib.utility.DateUtilities; +import com.todoroo.andlib.utility.Preferences; +import com.todoroo.astrid.core.PluginServices; + +public class SyncUpgradePrompt { + + private static final String P_SYNC_UPGRADE_PROMPT = "p_sync_upgr_prompt"; //$NON-NLS-1$ + private static long lastPromptDate = -1; + + public static void showSyncUpgradePrompt(Activity activity) { + if (lastPromptDate == -1) + lastPromptDate = Preferences.getLong(P_SYNC_UPGRADE_PROMPT, 0L); + + if (DateUtilities.now() - lastPromptDate > DateUtilities.ONE_WEEK * 3) { + if (!PluginServices.getActFmPreferenceService().isLoggedIn()) { + if (PluginServices.getGtasksPreferenceService().isLoggedIn()) { + // Logged into google but not astrid + // TODO: Show prompt + } else { + // Logged into neither + // TODO: Show prompt + } + setLastPromptDate(DateUtilities.now()); + } else if (PluginServices.getGtasksPreferenceService().isLoggedIn()) { + // Logged into both + // TODO: Show prompt + setLastPromptDate(Long.MAX_VALUE); + } else { + // Logged into just astrid--don't need to show prompts anymore + setLastPromptDate(Long.MAX_VALUE); + } + } + } + + private static void setLastPromptDate(long date) { + lastPromptDate = date; + Preferences.setLong(P_SYNC_UPGRADE_PROMPT, lastPromptDate); + } + + private static Dialog getDialog(Activity activity, int title, int body, Object... buttonsAndListeners) { + Dialog d = new Dialog(activity, R.style.ReminderDialog); + d.setContentView(R.layout.astrid_reminder_view); + ((TextView) d.findViewById(R.id.reminder_title)).setText(title); + ((TextView) d.findViewById(R.id.reminder_message)).setText(body); + + d.findViewById(R.id.reminder_complete).setVisibility(View.GONE); + TypedValue tv = new TypedValue(); + activity.getTheme().resolveAttribute(R.attr.asThemeTextColor, tv, false); + + int button1 = (Integer) buttonsAndListeners[0]; + OnClickListener listener1 = (OnClickListener) buttonsAndListeners[1]; + Button b1 = (Button) d.findViewById(R.id.reminder_edit); + b1.setText(button1); + b1.setOnClickListener(listener1); + b1.setTextColor(activity.getResources().getColor(tv.data)); + + if (buttonsAndListeners.length < 3) { + d.findViewById(R.id.reminder_snooze).setVisibility(View.GONE); + } else { + int button2 = (Integer) buttonsAndListeners[2]; + OnClickListener listener2 = (OnClickListener) buttonsAndListeners[3]; + Button b2 = (Button) d.findViewById(R.id.reminder_snooze); + b2.setText(button2); + b2.setOnClickListener(listener2); + b2.setTextColor(activity.getResources().getColor(tv.data)); + } + + return d; + } + +} diff --git a/astrid/plugin-src/com/todoroo/astrid/core/PluginServices.java b/astrid/plugin-src/com/todoroo/astrid/core/PluginServices.java index 075786c6f..23896cdb6 100644 --- a/astrid/plugin-src/com/todoroo/astrid/core/PluginServices.java +++ b/astrid/plugin-src/com/todoroo/astrid/core/PluginServices.java @@ -28,6 +28,7 @@ import com.todoroo.astrid.dao.UserActivityDao; import com.todoroo.astrid.dao.UserActivityOutstandingDao; import com.todoroo.astrid.dao.UserDao; import com.todoroo.astrid.data.Metadata; +import com.todoroo.astrid.gtasks.GtasksPreferenceService; import com.todoroo.astrid.service.AddOnService; import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.MetadataService; @@ -105,6 +106,9 @@ public final class PluginServices { @Autowired ActFmPreferenceService actFmPreferenceService; + @Autowired + GtasksPreferenceService gtasksPreferenceService; + private static volatile PluginServices instance; static { @@ -212,6 +216,10 @@ public final class PluginServices { return getInstance().actFmPreferenceService; } + public static GtasksPreferenceService getGtasksPreferenceService() { + return getInstance().gtasksPreferenceService; + } + // -- helpers /** diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index bf02ce50c..9ba8e1c00 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -45,6 +45,7 @@ import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.CommentsFragment; import com.todoroo.astrid.actfm.TagSettingsActivity; import com.todoroo.astrid.actfm.TagViewFragment; +import com.todoroo.astrid.actfm.sync.SyncUpgradePrompt; import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.adapter.TaskListFragmentPagerAdapter; import com.todoroo.astrid.api.AstridApiConstants; @@ -240,6 +241,8 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener trackActivitySource(); } + SyncUpgradePrompt.showSyncUpgradePrompt(this); + // Have to call this here because sometimes StartupService // isn't called (i.e. if the app was silently alive in the background) abTestEventReportingService.trackUserRetention(this);