package com.todoroo.astrid.actfm.sync; import android.app.Activity; import android.app.Dialog; import android.content.Intent; import android.util.TypedValue; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.timsu.astrid.R; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.ActFmLoginActivity; 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(final Activity activity) { if (lastPromptDate == -1) lastPromptDate = Preferences.getLong(P_SYNC_UPGRADE_PROMPT, 0L); Dialog d = null; if (DateUtilities.now() - lastPromptDate > DateUtilities.ONE_WEEK * 3) { if (!PluginServices.getActFmPreferenceService().isLoggedIn()) { if (PluginServices.getGtasksPreferenceService().isLoggedIn()) { // Logged into google but not astrid d = getDialog(activity, R.string.sync_upgr_gtasks_only_title, R.string.sync_upgr_gtasks_only_body, R.string.sync_upgr_gtasks_only_btn1, new Runnable() { @Override public void run() { activity.startActivity(new Intent(activity, ActFmLoginActivity.class)); } }, R.string.sync_upgr_gtasks_only_btn2, null); } else { // Logged into neither d = getDialog(activity, R.string.sync_upgr_neither_title, R.string.sync_upgr_neither_body, R.string.sync_upgr_neither_btn1, new Runnable() { @Override public void run() { activity.startActivity(new Intent(activity, ActFmLoginActivity.class)); } }); } setLastPromptDate(DateUtilities.now()); } else if (PluginServices.getGtasksPreferenceService().isLoggedIn()) { // Logged into both d = getDialog(activity, R.string.sync_upgr_both_title, R.string.sync_upgr_both_body, R.string.sync_upgr_both_btn1, null, R.string.sync_upgr_both_btn2, new Runnable() { @Override public void run() { new ActFmSyncV2Provider().signOut(activity); Toast.makeText(activity, R.string.sync_upgr_logged_out, Toast.LENGTH_LONG).show(); } }); setLastPromptDate(Long.MAX_VALUE); } else { // Logged into just astrid--don't need to show prompts anymore setLastPromptDate(Long.MAX_VALUE); } } if (d != null) d.show(); } 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) { final Dialog d = new Dialog(activity, R.style.ReminderDialog); d.setContentView(R.layout.astrid_reminder_view_portrait); ((TextView) d.findViewById(R.id.reminder_title)).setText(title); ((TextView) d.findViewById(R.id.reminder_message)).setText(body); d.findViewById(R.id.dismiss).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { d.dismiss(); } }); 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]; final Runnable listener1 = (Runnable) buttonsAndListeners[1]; Button b1 = (Button) d.findViewById(R.id.reminder_edit); b1.setText(button1); b1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { d.dismiss(); if (listener1 != null) listener1.run(); } }); b1.setBackgroundColor(activity.getResources().getColor(tv.data)); if (buttonsAndListeners.length < 3) { d.findViewById(R.id.reminder_snooze).setVisibility(View.GONE); } else { int button2 = (Integer) buttonsAndListeners[2]; final Runnable listener2 = (Runnable) buttonsAndListeners[3]; Button b2 = (Button) d.findViewById(R.id.reminder_snooze); b2.setText(button2); b2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { d.dismiss(); if (listener2 != null) listener2.run(); } }); b2.setBackgroundColor(activity.getResources().getColor(tv.data)); } return d; } }