From 6dce0b1819b9436cacd34d37d87499c3b9b726df Mon Sep 17 00:00:00 2001 From: James Lemieux Date: Fri, 30 May 2014 12:15:32 -0700 Subject: [PATCH] "No quick responses available" should display when all quick responses are deleted b/14239989 We take advantage of ListView's feature that displays an entirely different view in place when the backing Adapter is empty. The empty view is simply a TextView displaying "No quick responses available". Change-Id: I244ffd21fc4c1557c73979d4bb7c99306b11ebb2 --- res/layout/quick_responses.xml | 37 ++++++++++++++++++ res/values/strings.xml | 3 ++ .../activity/InsertQuickResponseDialog.java | 38 ++++++++++++------- 3 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 res/layout/quick_responses.xml diff --git a/res/layout/quick_responses.xml b/res/layout/quick_responses.xml new file mode 100644 index 000000000..20528f771 --- /dev/null +++ b/res/layout/quick_responses.xml @@ -0,0 +1,37 @@ + + + + + + + + + diff --git a/res/values/strings.xml b/res/values/strings.xml index 53b21c2df..74c1c87c0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -860,4 +860,7 @@ Email - %1$s + + None available + diff --git a/src/com/android/email/activity/InsertQuickResponseDialog.java b/src/com/android/email/activity/InsertQuickResponseDialog.java index 83960c52c..2012b7042 100644 --- a/src/com/android/email/activity/InsertQuickResponseDialog.java +++ b/src/com/android/email/activity/InsertQuickResponseDialog.java @@ -16,10 +16,6 @@ package com.android.email.activity; -import com.android.email.R; -import com.android.mail.providers.Account; -import com.android.mail.providers.UIProvider; - import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; @@ -31,12 +27,17 @@ import android.content.DialogInterface; import android.content.Loader; import android.database.Cursor; import android.os.Bundle; +import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleCursorAdapter; +import com.android.email.R; +import com.android.mail.providers.Account; +import com.android.mail.providers.UIProvider; + /** * Dialog which lists QuickResponses for the specified account. On user selection, will call * Callback.onQuickResponseSelected() with the selected QuickResponse text. @@ -96,14 +97,21 @@ public class InsertQuickResponseDialog extends DialogFragment { // Now that Callback implementation is verified, build the dialog final Context context = getActivity(); - final SimpleCursorAdapter adapter = new SimpleCursorAdapter(getActivity(), + final SimpleCursorAdapter adapter = new SimpleCursorAdapter(context, R.layout.quick_response_item, null, new String[] {UIProvider.QuickResponseColumns.TEXT}, new int[] {R.id.quick_response_text}, 0); - final ListView listView = new ListView(context); - listView.setAdapter(adapter); + final AlertDialog.Builder builder = new AlertDialog.Builder(context); + // inflate the view to show in the dialog + final LayoutInflater li = LayoutInflater.from(builder.getContext()); + final View quickResponsesView = li.inflate(R.layout.quick_responses, null); + + // the view contains both a ListView and its associated empty view; wire them together + final ListView listView = (ListView) quickResponsesView.findViewById(R.id.quick_responses); + listView.setEmptyView(quickResponsesView.findViewById(R.id.quick_responses_empty_view)); + listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { @@ -120,7 +128,7 @@ public class InsertQuickResponseDialog extends DialogFragment { getLoaderManager().initLoader(0, null, new LoaderManager.LoaderCallbacks() { @Override public Loader onCreateLoader(int id, Bundle args) { - return new CursorLoader(getActivity(), account.quickResponseUri, + return new CursorLoader(context, account.quickResponseUri, UIProvider.QUICK_RESPONSE_PROJECTION, null, null, null); } @@ -135,17 +143,19 @@ public class InsertQuickResponseDialog extends DialogFragment { } }); - final AlertDialog.Builder b = new AlertDialog.Builder(context); - b.setTitle(getResources() - .getString(R.string.message_compose_insert_quick_response_list_title)) - .setView(listView) + final String dialogTitle = getResources() + .getString(R.string.message_compose_insert_quick_response_list_title); + + return builder + .setTitle(dialogTitle) + .setView(quickResponsesView) .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } - }); - return b.create(); + }) + .create(); } private Callback getCallback() {