diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index 4dbaa9713..4d21e32a9 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -73,7 +73,7 @@ - diff --git a/astrid/res/layout/help_popover.xml b/astrid/res/layout/help_popover.xml new file mode 100644 index 000000000..df7de84e6 --- /dev/null +++ b/astrid/res/layout/help_popover.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + diff --git a/astrid/res/values/keys.xml b/astrid/res/values/keys.xml index 3c1a38bf6..9e283ae53 100644 --- a/astrid/res/values/keys.xml +++ b/astrid/res/values/keys.xml @@ -300,6 +300,13 @@ statistics + + + showed_add_task_help + showed_tap_task_help + showed_list_settings_help + showed_collaborators_help + diff --git a/astrid/res/values/strings-intro.xml b/astrid/res/values/strings-intro.xml index 9bdd77e03..b0f7be757 100644 --- a/astrid/res/values/strings-intro.xml +++ b/astrid/res/values/strings-intro.xml @@ -45,4 +45,19 @@ 4) Log In & Synchronize!\n \n + + + + Add a task here + + + Tap task to edit and share + + + Tap list settings to share the entire list + + + Collaborators can help you build your list or finish tasks + + diff --git a/astrid/src/com/todoroo/astrid/activity/Eula.java b/astrid/src/com/todoroo/astrid/activity/Eula.java index 2b05128cb..f3f9626d0 100644 --- a/astrid/src/com/todoroo/astrid/activity/Eula.java +++ b/astrid/src/com/todoroo/astrid/activity/Eula.java @@ -49,7 +49,7 @@ public final class Eula { * @param activity * The Activity to finish if the user rejects the EULA */ - static void showEula(final Activity activity) { + public static void showEula(final Activity activity) { if(!new Eula().shouldShowEula(activity)) return; diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index 989a369c5..60c82c334 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -101,6 +101,7 @@ import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.voice.VoiceInputAssistant; +import com.todoroo.astrid.welcome.HelpInfoPopover; import com.todoroo.astrid.widget.TasksWidget; /** @@ -227,6 +228,11 @@ public class TaskListActivity extends ListActivity implements OnScrollListener, Eula.showEula(this); + if (!Preferences.getBoolean(R.string.p_showed_add_task_help, false)) { + HelpInfoPopover.showPopover(TaskListActivity.this, quickAddBox, R.string.help_popover_add_task); + Preferences.setBoolean(R.string.p_showed_add_task_help, true); + } + if(getIntent().hasExtra(TOKEN_SOURCE)) { switch(getIntent().getIntExtra(TOKEN_SOURCE, Constants.SOURCE_DEFAULT)) { case Constants.SOURCE_NOTIFICATION: diff --git a/astrid/src/com/todoroo/astrid/welcome/HelpInfoPopover.java b/astrid/src/com/todoroo/astrid/welcome/HelpInfoPopover.java new file mode 100644 index 000000000..b8110611e --- /dev/null +++ b/astrid/src/com/todoroo/astrid/welcome/HelpInfoPopover.java @@ -0,0 +1,61 @@ +package com.todoroo.astrid.welcome; + +import greendroid.widget.QuickAction; +import greendroid.widget.QuickActionWidget; + +import java.util.List; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Rect; +import android.view.View; +import android.view.View.MeasureSpec; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.TextView; + +import com.timsu.astrid.R; + +public class HelpInfoPopover extends QuickActionWidget { + + public static void showPopover(final Activity activity, final View parent, final int textId) { + parent.post(new Runnable() { + @Override + public void run() { + HelpInfoPopover toShow = new HelpInfoPopover(activity, textId); + toShow.show(parent); + } + }); + } + + public HelpInfoPopover(Context context, int textId) { + super(context); + setContentView(R.layout.help_popover); + TextView message = (TextView)getContentView().findViewById(R.id.gdi_message); + message.setText(textId); + } + + @Override + protected void populateQuickActions(List quickActions) { + // Do nothing + } + + @Override + protected void onMeasureAndLayout(Rect anchorRect, View contentView) { + contentView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + contentView.measure(MeasureSpec.makeMeasureSpec(getScreenWidth(), MeasureSpec.EXACTLY), + ViewGroup.LayoutParams.WRAP_CONTENT); + + int rootHeight = contentView.getMeasuredHeight(); + + int offsetY = getArrowOffsetY(); + int dyTop = anchorRect.top; + int dyBottom = getScreenHeight() - anchorRect.bottom; + + boolean onTop = (dyTop > dyBottom); + int popupY = (onTop) ? anchorRect.top - rootHeight + offsetY : anchorRect.bottom - offsetY; + + setWidgetSpecs(popupY, onTop); + } + +} diff --git a/astrid/src/com/todoroo/astrid/activity/WelcomeScreen.java b/astrid/src/com/todoroo/astrid/welcome/WelcomeScreen.java similarity index 88% rename from astrid/src/com/todoroo/astrid/activity/WelcomeScreen.java rename to astrid/src/com/todoroo/astrid/welcome/WelcomeScreen.java index cd673561e..191afd36d 100644 --- a/astrid/src/com/todoroo/astrid/activity/WelcomeScreen.java +++ b/astrid/src/com/todoroo/astrid/welcome/WelcomeScreen.java @@ -1,4 +1,4 @@ -package com.todoroo.astrid.activity; +package com.todoroo.astrid.welcome; import android.app.Activity; import android.content.Intent; @@ -12,10 +12,14 @@ import com.timsu.astrid.R; import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.ActFmLoginActivity; +import com.todoroo.astrid.activity.Eula; +import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.service.StartupService; public class WelcomeScreen extends Activity implements Eula.EulaCallback { + Button showEula; + @Override protected void onCreate(Bundle savedInstanceState) { ContextManager.setContext(this); @@ -32,7 +36,7 @@ public class WelcomeScreen extends Activity implements Eula.EulaCallback { return; } - Button showEula = (Button) findViewById(R.id.show_eula); + showEula = (Button) findViewById(R.id.show_eula); showEula.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {