Bug 1013419 - Close the share dialog after sharing. r=bnicholson

This commit is contained in:
Wes Johnston 2014-05-27 14:06:39 -07:00
parent d1b9bb188a
commit a8cd19f8c2
3 changed files with 33 additions and 14 deletions

View File

@ -21,13 +21,14 @@ import android.widget.LinearLayout;
import android.os.Build;
public class MenuItemActionView extends LinearLayout
implements GeckoMenuItem.Layout {
implements GeckoMenuItem.Layout,
View.OnClickListener {
private static final String LOGTAG = "GeckoMenuItemActionView";
private MenuItemDefault mMenuItem;
private MenuItemActionBar mMenuButton;
private List<ImageButton> mActionButtons;
private View.OnClickListener mActionButtonListener;
private List<View.OnClickListener> mActionButtonListeners = new ArrayList<View.OnClickListener>();
public MenuItemActionView(Context context) {
this(context, null);
@ -107,12 +108,8 @@ public class MenuItemActionView extends LinearLayout
mMenuButton.setOnLongClickListener(listener);
}
public void setActionButtonClickListener(View.OnClickListener listener) {
mActionButtonListener = listener;
for (ImageButton button : mActionButtons) {
button.setOnClickListener(listener);
}
public void addActionButtonClickListener(View.OnClickListener listener) {
mActionButtonListeners.add(listener);
}
@Override
@ -149,7 +146,7 @@ public class MenuItemActionView extends LinearLayout
if (drawable != null) {
ImageButton button = new ImageButton(getContext(), null, R.attr.menuItemShareActionButtonStyle);
button.setImageDrawable(drawable);
button.setOnClickListener(mActionButtonListener);
button.setOnClickListener(this);
button.setTag(count);
final int height = (int) (getResources().getDimension(R.dimen.menu_item_row_height));
@ -162,4 +159,11 @@ public class MenuItemActionView extends LinearLayout
addView(button, count);
}
}
@Override
public void onClick(View view) {
for (View.OnClickListener listener : mActionButtonListeners) {
listener.onClick(view);
}
}
}

View File

@ -175,16 +175,31 @@ public class PromptListAdapter extends ArrayAdapter<PromptListItem> {
return -1;
}
private View getActionView(PromptListItem item) {
GeckoActionProvider provider = GeckoActionProvider.getForType(item.getIntent().getType(), getContext());
private View getActionView(PromptListItem item, final ListView list, final int position) {
final GeckoActionProvider provider = GeckoActionProvider.getForType(item.getIntent().getType(), getContext());
provider.setIntent(item.getIntent());
return provider.onCreateActionView();
final MenuItemActionView view = (MenuItemActionView) provider.onCreateActionView();
// If a quickshare button is clicked, we need to close the dialog.
view.addActionButtonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ListView.OnItemClickListener listener = list.getOnItemClickListener();
if (listener != null) {
listener.onItemClick(list, view, position, position);
}
}
});
return view;
}
private void updateActionView(final PromptListItem item, final MenuItemActionView view, final ListView list, final int position) {
view.setTitle(item.label);
view.setIcon(item.getIcon());
view.setSubMenuIndicator(item.isParent);
// If the share button is clicked, we need to close the dialog and then show an intent chooser
view.setMenuItemClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -221,7 +236,7 @@ public class PromptListAdapter extends ArrayAdapter<PromptListItem> {
if (convertView == null) {
if (type == VIEW_TYPE_ACTIONS) {
convertView = getActionView(item);
convertView = getActionView(item, (ListView) parent, position);
} else {
int resourceId = mResourceId;
if (item.isGroup) {

View File

@ -88,7 +88,7 @@ public class GeckoActionProvider {
// Create the view and set its data model.
ActivityChooserModel dataModel = ActivityChooserModel.get(mContext, mHistoryFileName);
MenuItemActionView view = new MenuItemActionView(mContext, null);
view.setActionButtonClickListener(mCallbacks);
view.addActionButtonClickListener(mCallbacks);
final PackageManager packageManager = mContext.getPackageManager();
int historySize = dataModel.getDistinctActivityCountInHistory();