下面列出了android.view.ContextMenu#findItem ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater menuInflater = Objects.requireNonNull(getActivity()).getMenuInflater();
menuInflater.inflate(R.menu.context_menu_summary, menu);
final MenuItem item = menu.findItem(R.id.action_show_report);
((ToolbarActivity) getActivity()).unsubscribeOnDestroy(
mBillingService.getReportsIapInfo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
skuDetailsWrapper -> {
if (skuDetailsWrapper.isPurchased()) {
item.setVisible(true);
} else {
item.setVisible(false);
}
},
throwable -> item.setVisible(false)));
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
int itemPosition = ((ContextMenuRecyclerView.RecyclerContextMenuInfo) menuInfo).position;
menu.setHeaderTitle(wifiNetworks.get(itemPosition).getSsid());
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.context_menu, menu);
boolean canViewPasword = wifiNetworks.get(itemPosition).isPasswordProtected()
&& !wifiNetworks.get(itemPosition).getKey().isEmpty();
boolean canClearPassword = canViewPasword;
MenuItem viewPasswordMenuItem = menu.findItem(R.id.context_menu_wifi_list_view_password);
viewPasswordMenuItem.setEnabled(canViewPasword);
MenuItem clearPasswordMenuItem = menu.findItem(R.id.context_menu_wifi_list_clear_password);
clearPasswordMenuItem.setEnabled(canClearPassword);
clearPasswordMenuItem.setVisible(!isDeviceRooted);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo acmi = (AdapterView.AdapterContextMenuInfo) menuInfo;
final Message message = this.messages.get(acmi.position);
this.selectedMessageReference = new WeakReference<>(message);
getMenuInflater().inflate(R.menu.search_result_context, menu);
MenuItem copy = menu.findItem(R.id.copy_message);
MenuItem quote = menu.findItem(R.id.quote_message);
MenuItem copyUrl = menu.findItem(R.id.copy_url);
if (message.isGeoUri()) {
copy.setVisible(false);
quote.setVisible(false);
} else {
copyUrl.setVisible(false);
}
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo acmi = (AdapterView.AdapterContextMenuInfo) menuInfo;
final Message message = this.messages.get(acmi.position);
this.selectedMessageReference = new WeakReference<>(message);
getMenuInflater().inflate(R.menu.search_result_context, menu);
MenuItem copy = menu.findItem(R.id.copy_message);
MenuItem quote = menu.findItem(R.id.quote_message);
MenuItem copyUrl = menu.findItem(R.id.copy_url);
if (message.isGeoUri()) {
copy.setVisible(false);
quote.setVisible(false);
} else {
copyUrl.setVisible(false);
}
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if (getActivity() != null) {
MenuInflater menuInflater = getActivity().getMenuInflater();
switch (v.getId()) {
case R.id.recycler_view:
contextMenuTarget = CONTEXT_MENU_ACCOUNTS;
menuInflater.inflate(R.menu.context_menu_accounts, menu);
break;
case R.id.recycler_view_accounts_sets:
contextMenuTarget = CONTEXT_MENU_SETS;
menuInflater.inflate(R.menu.context_menu_accounts_sets, menu);
break;
}
final MenuItem item = menu.findItem(R.id.action_show_report);
if (item != null) {
item.setVisible(false);
((ToolbarActivity) getActivity()).unsubscribeOnDestroy(
mBillingService.get().getReportsIapInfo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
skuDetailsWrapper -> {
if (skuDetailsWrapper.isPurchased()) {
item.setVisible(true);
} else {
item.setVisible(false);
}
},
throwable -> item.setVisible(false)));
}
}
}
@Override
public void onCreateContextMenu(final ContextMenu menu, final View v, final ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
final StartConversationActivity activity = (StartConversationActivity) getActivity();
if (activity == null) {
return;
}
activity.getMenuInflater().inflate(mResContextMenu, menu);
final AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo;
if (mResContextMenu == R.menu.conference_context) {
activity.conference_context_id = acmi.position;
final Bookmark bookmark = (Bookmark) activity.conferences.get(acmi.position);
final Conversation conversation = bookmark.getConversation();
final MenuItem share = menu.findItem(R.id.context_share_uri);
share.setVisible(conversation == null || !conversation.isPrivateAndNonAnonymous());
} else if (mResContextMenu == R.menu.contact_context) {
activity.contact_context_id = acmi.position;
final Contact contact = (Contact) activity.contacts.get(acmi.position);
final MenuItem blockUnblockItem = menu.findItem(R.id.context_contact_block_unblock);
final MenuItem showContactDetailsItem = menu.findItem(R.id.context_contact_details);
final MenuItem deleteContactMenuItem = menu.findItem(R.id.context_delete_contact);
if (contact.isSelf()) {
showContactDetailsItem.setVisible(false);
}
deleteContactMenuItem.setVisible(contact.showInRoster() && !contact.getOption(Contact.Options.SYNCED_VIA_OTHER));
final XmppConnection xmpp = contact.getAccount().getXmppConnection();
if (xmpp != null && xmpp.getFeatures().blocking() && !contact.isSelf()) {
if (contact.isBlocked()) {
blockUnblockItem.setTitle(R.string.unblock_contact);
} else {
blockUnblockItem.setTitle(R.string.block_contact);
}
} else {
blockUnblockItem.setVisible(false);
}
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
Object account = v.getTag(R.id.TAG_ACCOUNT);
Object fingerprint = v.getTag(R.id.TAG_FINGERPRINT);
Object fingerprintStatus = v.getTag(R.id.TAG_FINGERPRINT_STATUS);
if (account != null
&& fingerprint != null
&& account instanceof Account
&& fingerprintStatus != null
&& fingerprint instanceof String
&& fingerprintStatus instanceof FingerprintStatus) {
getMenuInflater().inflate(R.menu.omemo_key_context, menu);
MenuItem distrust = menu.findItem(R.id.distrust_key);
MenuItem verifyScan = menu.findItem(R.id.verify_scan);
if (this instanceof TrustKeysActivity) {
distrust.setVisible(false);
verifyScan.setVisible(false);
} else {
FingerprintStatus status = (FingerprintStatus) fingerprintStatus;
if (!status.isActive() || status.isVerified()) {
verifyScan.setVisible(false);
}
distrust.setVisible(status.isVerified() || (!status.isActive() && status.isTrusted()));
}
this.mSelectedAccount = (Account) account;
this.mSelectedFingerprint = (String) fingerprint;
}
}
@Override
public void onCreateContextMenu(final ContextMenu menu, final View v, final ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
final StartConversationActivity activity = (StartConversationActivity) getActivity();
if (activity == null) {
return;
}
activity.getMenuInflater().inflate(mResContextMenu, menu);
final AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo;
if (mResContextMenu == R.menu.conference_context) {
activity.conference_context_id = acmi.position;
final Bookmark bookmark = (Bookmark) activity.conferences.get(acmi.position);
final Conversation conversation = bookmark.getConversation();
final MenuItem share = menu.findItem(R.id.context_share_uri);
share.setVisible(conversation == null || !conversation.isPrivateAndNonAnonymous());
} else if (mResContextMenu == R.menu.contact_context) {
activity.contact_context_id = acmi.position;
final Contact contact = (Contact) activity.contacts.get(acmi.position);
final MenuItem blockUnblockItem = menu.findItem(R.id.context_contact_block_unblock);
final MenuItem showContactDetailsItem = menu.findItem(R.id.context_contact_details);
final MenuItem deleteContactMenuItem = menu.findItem(R.id.context_delete_contact);
if (contact.isSelf()) {
showContactDetailsItem.setVisible(false);
}
deleteContactMenuItem.setVisible(contact.showInRoster() && !contact.getOption(Contact.Options.SYNCED_VIA_OTHER));
final XmppConnection xmpp = contact.getAccount().getXmppConnection();
if (xmpp != null && xmpp.getFeatures().blocking() && !contact.isSelf()) {
if (contact.isBlocked()) {
blockUnblockItem.setTitle(R.string.unblock_contact);
} else {
blockUnblockItem.setTitle(R.string.block_contact);
}
} else {
blockUnblockItem.setVisible(false);
}
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
Object account = v.getTag(R.id.TAG_ACCOUNT);
Object fingerprint = v.getTag(R.id.TAG_FINGERPRINT);
Object fingerprintStatus = v.getTag(R.id.TAG_FINGERPRINT_STATUS);
if (account != null
&& fingerprint != null
&& account instanceof Account
&& fingerprintStatus != null
&& fingerprint instanceof String
&& fingerprintStatus instanceof FingerprintStatus) {
getMenuInflater().inflate(R.menu.omemo_key_context, menu);
MenuItem distrust = menu.findItem(R.id.distrust_key);
MenuItem verifyScan = menu.findItem(R.id.verify_scan);
if (this instanceof TrustKeysActivity) {
distrust.setVisible(false);
verifyScan.setVisible(false);
} else {
FingerprintStatus status = (FingerprintStatus) fingerprintStatus;
if (!status.isActive() || status.isVerified()) {
verifyScan.setVisible(false);
}
distrust.setVisible(status.isVerified() || (!status.isActive() && status.isTrusted()));
}
this.mSelectedAccount = (Account) account;
this.mSelectedFingerprint = (String) fingerprint;
}
}
protected void createFileMenu(final ContextMenu menu, final String path) {
final BookSettings bs = SettingsManager.getBookSettings(path);
final MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.book_menu, menu);
menu.setHeaderTitle(path);
menu.findItem(R.id.bookmenu_recentgroup).setVisible(bs != null);
menu.findItem(R.id.bookmenu_openbookshelf).setVisible(false);
menu.findItem(R.id.bookmenu_openbookfolder).setVisible(false);
final MenuItem om = menu.findItem(R.id.bookmenu_open);
final SubMenu osm = om != null ? om.getSubMenu() : null;
if (osm == null) {
return;
}
osm.clear();
final List<Bookmark> list = new ArrayList<Bookmark>();
list.add(new Bookmark(true, getString(R.string.bookmark_start), PageIndex.FIRST, 0, 0));
list.add(new Bookmark(true, getString(R.string.bookmark_end), PageIndex.LAST, 0, 1));
if (bs != null) {
if (LengthUtils.isNotEmpty(bs.bookmarks)) {
list.addAll(bs.bookmarks);
}
list.add(new Bookmark(true, getString(R.string.bookmark_current), bs.currentPage, bs.offsetX, bs.offsetY));
}
Collections.sort(list);
for (final Bookmark b : list) {
addBookmarkMenuItem(osm, b);
}
}
protected void onCreateBookMenu(final ContextMenu menu, final BookNode node) {
final BookSettings bs = node.settings;
final MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.book_menu, menu);
menu.setHeaderTitle(node.path);
menu.findItem(R.id.bookmenu_recentgroup).setVisible(bs != null);
final BookShelfAdapter bookShelf = getController().getBookShelf(node);
final BookShelfAdapter current = bookcaseView != null ? getController().getBookShelf(
bookcaseView.getCurrentList()) : null;
menu.findItem(R.id.bookmenu_openbookshelf).setVisible(
bookShelf != null && current != null && bookShelf != current);
final MenuItem om = menu.findItem(R.id.bookmenu_open);
final SubMenu osm = om != null ? om.getSubMenu() : null;
if (osm == null) {
return;
}
osm.clear();
final List<Bookmark> list = new ArrayList<Bookmark>();
list.add(new Bookmark(true, getString(R.string.bookmark_start), PageIndex.FIRST, 0, 0));
list.add(new Bookmark(true, getString(R.string.bookmark_end), PageIndex.LAST, 0, 1));
if (bs != null) {
if (LengthUtils.isNotEmpty(bs.bookmarks)) {
list.addAll(bs.bookmarks);
}
list.add(new Bookmark(true, getString(R.string.bookmark_current), bs.currentPage, bs.offsetX, bs.offsetY));
}
Collections.sort(list);
for (final Bookmark b : list) {
addBookmarkMenuItem(osm, b);
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if (menuInfo instanceof AdapterContextMenuInfo) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
PlaylistItem item = mAdapter.getItem(info.position);
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.playlist_context, menu);
MenuItem searchItem = menu.findItem(R.id.playlist_context_search);
searchItem.setVisible(isSearchable(item));
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo info) {
super.onCreateContextMenu(menu, v, info);
boolean shouldShowContextMenu = true;
boolean showCurrentLayerItems = false;
boolean hasClipboardContents = mViewModel.hasClipboardContents();
if (v instanceof DocumentView) {
DocumentView dv = (DocumentView) v;
shouldShowContextMenu = dv.shouldShowContextMenu();
showCurrentLayerItems = dv.shouldShowCurrentLayerContextItems();
} else if (v instanceof LayerListView) {
//LayerListView llv = (LayerListView) v;
showCurrentLayerItems = true;
}
if (shouldShowContextMenu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_context, menu);
MenuItem item = menu.findItem(CUT);
item.setVisible(showCurrentLayerItems);
item = menu.findItem(COPY);
item.setVisible(showCurrentLayerItems);
item = menu.findItem(PASTE);
item.setVisible(showCurrentLayerItems || hasClipboardContents);
item.setEnabled(hasClipboardContents);
item = menu.findItem(DUPLICATE);
item.setVisible(showCurrentLayerItems);
item = menu.findItem(DELETE);
item.setVisible(showCurrentLayerItems);
item = menu.findItem(GROUP);
item.setVisible(showCurrentLayerItems);
}
}
@Override
public void populateContextMenu(ContextMenu menu, AdapterView.AdapterContextMenuInfo acmi, int num)
{
try
{
if (readWriteAdapter)
{
menu.add(0, R.id.fman_action_refresh, 0, R.string.fman_refresh_title);
menu.add(0, R.id.fman_action_create_folder, 0, R.string.fman_create_folder_title);
if (num > 0)
{
menu.add(0, R.id.fman_action_rename, 0, R.string.fman_rename_title);
menu.add(0, R.id.fman_action_delete, 0, R.string.fman_delete_title);
}
}
MenuItem activeSort = null;
menu.add(0, R.id.fman_action_sort_by_name, 0, R.string.fman_sort_by_name);
if ((mode & MODE_SORTING) == SORT_NAME)
{
activeSort = menu.findItem(R.id.fman_action_sort_by_name);
}
menu.add(0, R.id.fman_action_sort_by_ext, 0, R.string.fman_sort_by_ext);
if ((mode & MODE_SORTING) == SORT_EXT)
{
activeSort = menu.findItem(R.id.fman_action_sort_by_ext);
}
menu.add(0, R.id.fman_action_sort_by_size, 0, R.string.fman_sort_by_size);
if ((mode & MODE_SORTING) == SORT_SIZE)
{
activeSort = menu.findItem(R.id.fman_action_sort_by_size);
}
menu.add(0, R.id.fman_action_sort_by_date, 0, R.string.fman_sort_by_date);
if ((mode & MODE_SORTING) == SORT_DATE)
{
activeSort = menu.findItem(R.id.fman_action_sort_by_date);
}
if (activeSort != null)
{
activeSort.setCheckable(true);
activeSort.setChecked(true);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
private void populateContextMenu(ContextMenu menu) {
final Message m = this.selectedMessage;
final Transferable t = m.getTransferable();
Message relevantForCorrection = m;
while (relevantForCorrection.mergeable(relevantForCorrection.next())) {
relevantForCorrection = relevantForCorrection.next();
}
if (m.getType() != Message.TYPE_STATUS && m.getType() != Message.TYPE_RTP_SESSION) {
if (m.getEncryption() == Message.ENCRYPTION_AXOLOTL_NOT_FOR_THIS_DEVICE || m.getEncryption() == Message.ENCRYPTION_AXOLOTL_FAILED) {
return;
}
if (m.getStatus() == Message.STATUS_RECEIVED && t != null && (t.getStatus() == Transferable.STATUS_CANCELLED || t.getStatus() == Transferable.STATUS_FAILED)) {
return;
}
final boolean deleted = m.isFileDeleted();
final boolean encrypted = m.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED
|| m.getEncryption() == Message.ENCRYPTION_PGP;
final boolean receiving = m.getStatus() == Message.STATUS_RECEIVED && (t instanceof JingleFileTransferConnection || t instanceof HttpDownloadConnection);
activity.getMenuInflater().inflate(R.menu.message_context, menu);
menu.setHeaderTitle(R.string.message_options);
MenuItem openWith = menu.findItem(R.id.open_with);
MenuItem copyMessage = menu.findItem(R.id.copy_message);
MenuItem copyLink = menu.findItem(R.id.copy_link);
MenuItem quoteMessage = menu.findItem(R.id.quote_message);
MenuItem retryDecryption = menu.findItem(R.id.retry_decryption);
MenuItem correctMessage = menu.findItem(R.id.correct_message);
MenuItem deleteMessage = menu.findItem(R.id.delete_message);
MenuItem shareWith = menu.findItem(R.id.share_with);
MenuItem sendAgain = menu.findItem(R.id.send_again);
MenuItem copyUrl = menu.findItem(R.id.copy_url);
MenuItem cancelTransmission = menu.findItem(R.id.cancel_transmission);
MenuItem downloadFile = menu.findItem(R.id.download_file);
MenuItem deleteFile = menu.findItem(R.id.delete_file);
MenuItem showErrorMessage = menu.findItem(R.id.show_error_message);
final boolean showError = m.getStatus() == Message.STATUS_SEND_FAILED && m.getErrorMessage() != null && !Message.ERROR_MESSAGE_CANCELLED.equals(m.getErrorMessage());
deleteMessage.setVisible(true);
if (!m.isFileOrImage() && !encrypted && !m.isGeoUri() && !m.treatAsDownloadable()) {
copyMessage.setVisible(true);
quoteMessage.setVisible(!showError && MessageUtils.prepareQuote(m).length() > 0);
String body = m.getMergedBody().toString();
if (ShareUtil.containsXmppUri(body)) {
copyLink.setTitle(R.string.copy_jabber_id);
copyLink.setVisible(true);
} else if (Patterns.AUTOLINK_WEB_URL.matcher(body).find()) {
copyLink.setVisible(true);
}
}
if (m.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED && !deleted) {
retryDecryption.setVisible(true);
}
if (!showError
&& relevantForCorrection.getType() == Message.TYPE_TEXT
&& !m.isGeoUri()
&& relevantForCorrection.isLastCorrectableMessage()
&& m.getConversation() instanceof Conversation) {
correctMessage.setVisible(true);
}
if ((m.isFileOrImage() && !deleted && !receiving) || (m.getType() == Message.TYPE_TEXT && !m.treatAsDownloadable())) {
shareWith.setVisible(true);
}
if (m.getStatus() == Message.STATUS_SEND_FAILED) {
sendAgain.setVisible(true);
}
if (m.hasFileOnRemoteHost()
|| m.isGeoUri()
|| m.isXmppUri()
|| m.treatAsDownloadable()
|| t instanceof HttpDownloadConnection) {
copyUrl.setVisible(true);
}
if (m.isFileOrImage() && deleted && m.hasFileOnRemoteHost()) {
downloadFile.setVisible(true);
downloadFile.setTitle(activity.getString(R.string.download_x_file, UIHelper.getFileDescriptionString(activity, m)));
}
final boolean waitingOfferedSending = m.getStatus() == Message.STATUS_WAITING
|| m.getStatus() == Message.STATUS_UNSEND
|| m.getStatus() == Message.STATUS_OFFERED;
final boolean cancelable = (t != null && !deleted) || waitingOfferedSending && m.needsUploading();
if (cancelable) {
cancelTransmission.setVisible(true);
}
if (m.isFileOrImage() && !deleted && !cancelable) {
String path = m.getRelativeFilePath();
Log.d(Config.LOGTAG, "Path = " + path);
if (path == null || !path.startsWith("/") || path.contains(FileBackend.getConversationsDirectory("null"))) {
deleteFile.setVisible(true);
deleteFile.setTitle(activity.getString(R.string.delete_x_file, UIHelper.getFileDescriptionString(activity, m)));
}
}
showErrorMessage.setVisible(showError);
final String mime = m.isFileOrImage() ? m.getMimeType() : null;
if ((m.isGeoUri() && GeoHelper.openInOsmAnd(getActivity(), m)) || (mime != null && mime.startsWith("audio/"))) {
openWith.setVisible(true);
}
}
}
private void populateContextMenu(ContextMenu menu) {
final Message m = this.selectedMessage;
final Transferable t = m.getTransferable();
Message relevantForCorrection = m;
while (relevantForCorrection.mergeable(relevantForCorrection.next())) {
relevantForCorrection = relevantForCorrection.next();
}
if (m.getType() != Message.TYPE_STATUS && m.getType() != Message.TYPE_RTP_SESSION) {
if (m.getEncryption() == Message.ENCRYPTION_AXOLOTL_NOT_FOR_THIS_DEVICE || m.getEncryption() == Message.ENCRYPTION_AXOLOTL_FAILED) {
return;
}
if (m.getStatus() == Message.STATUS_RECEIVED && t != null && (t.getStatus() == Transferable.STATUS_CANCELLED || t.getStatus() == Transferable.STATUS_FAILED)) {
return;
}
final boolean deleted = m.isDeleted();
final boolean encrypted = m.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED
|| m.getEncryption() == Message.ENCRYPTION_PGP;
final boolean receiving = m.getStatus() == Message.STATUS_RECEIVED && (t instanceof JingleFileTransferConnection || t instanceof HttpDownloadConnection);
activity.getMenuInflater().inflate(R.menu.message_context, menu);
menu.setHeaderTitle(R.string.message_options);
MenuItem openWith = menu.findItem(R.id.open_with);
MenuItem copyMessage = menu.findItem(R.id.copy_message);
MenuItem copyLink = menu.findItem(R.id.copy_link);
MenuItem quoteMessage = menu.findItem(R.id.quote_message);
MenuItem retryDecryption = menu.findItem(R.id.retry_decryption);
MenuItem correctMessage = menu.findItem(R.id.correct_message);
MenuItem shareWith = menu.findItem(R.id.share_with);
MenuItem sendAgain = menu.findItem(R.id.send_again);
MenuItem copyUrl = menu.findItem(R.id.copy_url);
MenuItem downloadFile = menu.findItem(R.id.download_file);
MenuItem cancelTransmission = menu.findItem(R.id.cancel_transmission);
MenuItem deleteFile = menu.findItem(R.id.delete_file);
MenuItem showErrorMessage = menu.findItem(R.id.show_error_message);
final boolean showError = m.getStatus() == Message.STATUS_SEND_FAILED && m.getErrorMessage() != null && !Message.ERROR_MESSAGE_CANCELLED.equals(m.getErrorMessage());
if (!m.isFileOrImage() && !encrypted && !m.isGeoUri() && !m.treatAsDownloadable()) {
copyMessage.setVisible(true);
quoteMessage.setVisible(!showError && MessageUtils.prepareQuote(m).length() > 0);
String body = m.getMergedBody().toString();
if (ShareUtil.containsXmppUri(body)) {
copyLink.setTitle(R.string.copy_jabber_id);
copyLink.setVisible(true);
} else if (Patterns.AUTOLINK_WEB_URL.matcher(body).find()) {
copyLink.setVisible(true);
}
}
if (m.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED && !deleted) {
retryDecryption.setVisible(true);
}
if (!showError
&& relevantForCorrection.getType() == Message.TYPE_TEXT
&& !m.isGeoUri()
&& relevantForCorrection.isLastCorrectableMessage()
&& m.getConversation() instanceof Conversation) {
correctMessage.setVisible(true);
}
if ((m.isFileOrImage() && !deleted && !receiving) || (m.getType() == Message.TYPE_TEXT && !m.treatAsDownloadable())) {
shareWith.setVisible(true);
}
if (m.getStatus() == Message.STATUS_SEND_FAILED) {
sendAgain.setVisible(true);
}
if (m.hasFileOnRemoteHost()
|| m.isGeoUri()
|| m.treatAsDownloadable()
|| t instanceof HttpDownloadConnection) {
copyUrl.setVisible(true);
}
if (m.isFileOrImage() && deleted && m.hasFileOnRemoteHost()) {
downloadFile.setVisible(true);
downloadFile.setTitle(activity.getString(R.string.download_x_file, UIHelper.getFileDescriptionString(activity, m)));
}
final boolean waitingOfferedSending = m.getStatus() == Message.STATUS_WAITING
|| m.getStatus() == Message.STATUS_UNSEND
|| m.getStatus() == Message.STATUS_OFFERED;
final boolean cancelable = (t != null && !deleted) || waitingOfferedSending && m.needsUploading();
if (cancelable) {
cancelTransmission.setVisible(true);
}
if (m.isFileOrImage() && !deleted && !cancelable) {
String path = m.getRelativeFilePath();
if (path == null || !path.startsWith("/") || FileBackend.isInDirectoryThatShouldNotBeScanned(getActivity(), path)) {
deleteFile.setVisible(true);
deleteFile.setTitle(activity.getString(R.string.delete_x_file, UIHelper.getFileDescriptionString(activity, m)));
}
}
if (showError) {
showErrorMessage.setVisible(true);
}
final String mime = m.isFileOrImage() ? m.getMimeType() : null;
if ((m.isGeoUri() && GeoHelper.openInOsmAnd(getActivity(), m)) || (mime != null && mime.startsWith("audio/"))) {
openWith.setVisible(true);
}
}
}