package info.guardianproject.securereaderinterface.ui; import info.guardianproject.securereaderinterface.App; import info.guardianproject.securereaderinterface.adapters.ShareSpinnerAdapter; import info.guardianproject.securereaderinterface.R; import org.holoeverywhere.widget.AdapterView; import org.holoeverywhere.widget.Spinner; import android.content.Context; import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup.LayoutParams; import com.actionbarsherlock.view.ActionProvider; import com.tinymission.rss.Feed; public class ActionProviderShare extends ActionProvider { private final Context mContext; private Spinner mSpinner; private ShareSpinnerAdapter mAdapter; private Feed mFeed; public ActionProviderShare(Context context) { super(context); mContext = context; } @Override public View onCreateActionView() { LayoutInflater inflater = LayoutInflater.from(mContext); View view = inflater.inflate(R.layout.actionbar_spinner_share, null); view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT)); mSpinner = (Spinner) view.findViewById(R.id.spinnerShare); mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { ShareSpinnerAdapter adapter = (ShareSpinnerAdapter) parent.getAdapter(); Intent shareIntent = adapter.getIntentAtPosition(position); if (shareIntent != null) { mContext.startActivity(shareIntent); } } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); updateOrCreateAdapter(); return view; } @Override public boolean hasSubMenu() { return false; } private void updateOrCreateAdapter() { if (mSpinner != null) { if (mAdapter == null) { mAdapter = new ShareSpinnerAdapter(mSpinner, mContext, R.string.feed_share_popup_title, R.layout.actionbar_spinner_share_item); mSpinner.setAdapter(mAdapter); } mAdapter.clear(); Intent shareIntent = App.getInstance().socialReader.getShareIntent(mFeed); mAdapter.addSecureBTShareResolver(shareIntent); mAdapter.addIntentResolvers(shareIntent); mAdapter.notifyDataSetChanged(); } } public void setFeed(Feed feed) { mFeed = feed; updateOrCreateAdapter(); } }