use of org.thoughtcrime.securesms.mediasend.Media in project Signal-Android by signalapp.
the class ConversationParentFragment method initializeDraft.
// /// Initializers
private ListenableFuture<Boolean> initializeDraft(@NonNull ConversationIntents.Args args) {
final SettableFuture<Boolean> result = new SettableFuture<>();
final CharSequence draftText = args.getDraftText();
final Uri draftMedia = requireActivity().getIntent().getData();
final String draftContentType = requireActivity().getIntent().getType();
final MediaType draftMediaType = MediaType.from(draftContentType);
final List<Media> mediaList = args.getMedia();
final StickerLocator stickerLocator = args.getStickerLocator();
final boolean borderless = args.isBorderless();
if (stickerLocator != null && draftMedia != null) {
Log.d(TAG, "Handling shared sticker.");
sendSticker(stickerLocator, Objects.requireNonNull(draftContentType), draftMedia, 0, true);
return new SettableFuture<>(false);
}
if (draftMedia != null && draftContentType != null && borderless) {
SimpleTask.run(getLifecycle(), () -> getKeyboardImageDetails(draftMedia), details -> sendKeyboardImage(draftMedia, draftContentType, details));
return new SettableFuture<>(false);
}
if (!Util.isEmpty(mediaList)) {
Log.d(TAG, "Handling shared Media.");
Intent sendIntent = MediaSelectionActivity.editor(requireContext(), sendButton.getSelectedTransport(), mediaList, recipient.getId(), draftText);
startActivityForResult(sendIntent, MEDIA_SENDER);
return new SettableFuture<>(false);
}
if (draftText != null) {
composeText.setText("");
composeText.append(draftText);
result.set(true);
}
if (draftMedia != null && draftMediaType != null) {
Log.d(TAG, "Handling shared Data.");
return setMedia(draftMedia, draftMediaType);
}
if (draftText == null && draftMedia == null && draftMediaType == null) {
return initializeDraftFromDatabase();
} else {
updateToggleButtonState();
result.set(false);
}
return result;
}
use of org.thoughtcrime.securesms.mediasend.Media in project Signal-Android by signalapp.
the class AddGroupDetailsFragment method showAvatarPicker.
private void showAvatarPicker() {
Media media = viewModel.getAvatarMedia();
SafeNavigation.safeNavigate(Navigation.findNavController(requireView()), AddGroupDetailsFragmentDirections.actionAddGroupDetailsFragmentToAvatarPicker(null, media).setIsNewGroup(true));
}
use of org.thoughtcrime.securesms.mediasend.Media in project Signal-Android by signalapp.
the class ManageProfileFragment method onViewCreated.
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
this.toolbar = view.findViewById(R.id.toolbar);
this.avatarView = view.findViewById(R.id.manage_profile_avatar);
this.avatarPlaceholderView = view.findViewById(R.id.manage_profile_avatar_placeholder);
this.profileNameView = view.findViewById(R.id.manage_profile_name);
this.profileNameContainer = view.findViewById(R.id.manage_profile_name_container);
this.usernameView = view.findViewById(R.id.manage_profile_username);
this.usernameContainer = view.findViewById(R.id.manage_profile_username_container);
this.aboutView = view.findViewById(R.id.manage_profile_about);
this.aboutContainer = view.findViewById(R.id.manage_profile_about_container);
this.aboutEmojiView = view.findViewById(R.id.manage_profile_about_icon);
this.avatarInitials = view.findViewById(R.id.manage_profile_avatar_initials);
this.avatarBackground = view.findViewById(R.id.manage_profile_avatar_background);
this.badgesContainer = view.findViewById(R.id.manage_profile_badges_container);
this.badgeView = view.findViewById(R.id.manage_profile_badge);
initializeViewModel();
this.toolbar.setNavigationOnClickListener(v -> requireActivity().finish());
View editAvatar = view.findViewById(R.id.manage_profile_edit_photo);
editAvatar.setOnClickListener(v -> onEditAvatarClicked());
this.profileNameContainer.setOnClickListener(v -> {
SafeNavigation.safeNavigate(Navigation.findNavController(v), ManageProfileFragmentDirections.actionManageProfileName());
});
this.usernameContainer.setOnClickListener(v -> {
SafeNavigation.safeNavigate(Navigation.findNavController(v), ManageProfileFragmentDirections.actionManageUsername());
});
this.aboutContainer.setOnClickListener(v -> {
SafeNavigation.safeNavigate(Navigation.findNavController(v), ManageProfileFragmentDirections.actionManageAbout());
});
getParentFragmentManager().setFragmentResultListener(AvatarPickerFragment.REQUEST_KEY_SELECT_AVATAR, getViewLifecycleOwner(), (key, bundle) -> {
if (bundle.getBoolean(AvatarPickerFragment.SELECT_AVATAR_CLEAR)) {
viewModel.onAvatarSelected(requireContext(), null);
} else {
Media result = bundle.getParcelable(AvatarPickerFragment.SELECT_AVATAR_MEDIA);
viewModel.onAvatarSelected(requireContext(), result);
}
});
avatarInitials.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
if (avatarInitials.length() > 0) {
updateInitials(avatarInitials.getText().toString());
}
});
if (FeatureFlags.donorBadges()) {
badgesContainer.setOnClickListener(v -> {
if (Recipient.self().getBadges().isEmpty()) {
BecomeASustainerFragment.show(getParentFragmentManager());
} else {
SafeNavigation.safeNavigate(Navigation.findNavController(v), ManageProfileFragmentDirections.actionManageProfileFragmentToBadgeManageFragment());
}
});
} else {
badgesContainer.setVisibility(View.GONE);
}
}
use of org.thoughtcrime.securesms.mediasend.Media in project Signal-Android by signalapp.
the class EditProfileFragment method onViewCreated.
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
GroupId groupId = GroupId.parseNullableOrThrow(requireArguments().getString(GROUP_ID, null));
initializeViewModel(requireArguments().getBoolean(EXCLUDE_SYSTEM, false), groupId, savedInstanceState != null);
initializeResources(view, groupId);
initializeProfileAvatar();
initializeProfileName();
getParentFragmentManager().setFragmentResultListener(AvatarPickerFragment.REQUEST_KEY_SELECT_AVATAR, getViewLifecycleOwner(), (key, bundle) -> {
if (bundle.getBoolean(AvatarPickerFragment.SELECT_AVATAR_CLEAR)) {
viewModel.setAvatarMedia(null);
viewModel.setAvatar(null);
avatar.setImageDrawable(null);
} else {
Media media = bundle.getParcelable(AvatarPickerFragment.SELECT_AVATAR_MEDIA);
handleMediaFromResult(media);
}
});
}
use of org.thoughtcrime.securesms.mediasend.Media in project Signal-Android by signalapp.
the class ShareActivity method openInterstitial.
private void openInterstitial(@NonNull Set<ShareContactAndThread> shareContactAndThreads, @Nullable ShareData shareData) {
MultiShareArgs.Builder builder = new MultiShareArgs.Builder(shareContactAndThreads).withMedia(args.getExtraMedia()).withDraftText(args.getExtraText() != null ? args.getExtraText().toString() : null).withStickerLocator(args.getExtraSticker()).asBorderless(args.isBorderless());
if (shareData != null && shareData.isForIntent()) {
Log.i(TAG, "Shared data is a single file.");
builder.withDataUri(shareData.getUri()).withDataType(shareData.getMimeType());
} else if (shareData != null && shareData.isForMedia()) {
Log.i(TAG, "Shared data is set of media.");
builder.withMedia(shareData.getMedia());
} else if (shareData != null && shareData.isForPrimitive()) {
Log.i(TAG, "Shared data is a primitive type.");
} else if (shareData == null && args.getExtraSticker() != null) {
builder.withDataType(getIntent().getType());
} else {
Log.i(TAG, "Shared data was not external.");
}
MultiShareArgs multiShareArgs = builder.build();
InterstitialContentType interstitialContentType = multiShareArgs.getInterstitialContentType();
switch(interstitialContentType) {
case TEXT:
startActivityForResult(ShareInterstitialActivity.createIntent(this, multiShareArgs), RESULT_TEXT_CONFIRMATION);
break;
case MEDIA:
List<Media> media = new ArrayList<>(multiShareArgs.getMedia());
if (media.isEmpty()) {
media.add(new Media(multiShareArgs.getDataUri(), multiShareArgs.getDataType(), 0, 0, 0, 0, 0, false, false, Optional.absent(), Optional.absent(), Optional.absent()));
}
Intent intent = MediaSelectionActivity.share(this, MultiShareSender.getWorstTransportOption(this, multiShareArgs.getShareContactAndThreads()), media, Stream.of(multiShareArgs.getShareContactAndThreads()).map(ShareContactAndThread::getRecipientId).toList(), multiShareArgs.getDraftText());
startActivityForResult(intent, RESULT_MEDIA_CONFIRMATION);
break;
default:
// noinspection CodeBlock2Expr
MultiShareSender.send(multiShareArgs, results -> {
MultiShareDialogs.displayResultDialog(this, results, () -> {
viewModel.onSuccessfulShare();
finish();
});
});
break;
}
}
Aggregations