use of com.odysee.app.MainActivity in project odysee-android by OdyseeTeam.
the class FileViewFragment method onStop.
@Override
public void onStop() {
super.onStop();
Context context = getContext();
if (context instanceof MainActivity) {
MainActivity activity = (MainActivity) context;
activity.removeDownloadActionListener(this);
activity.removeFetchClaimsListener(this);
activity.removePIPModeListener(this);
activity.removeScreenOrientationListener(this);
activity.removeStoragePermissionListener(this);
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
activity.showAppBar();
activity.checkNowPlaying();
activity.resetCurrentDisplayFragment();
}
closeWebView();
// Tasks on the scheduled executor needs to be really terminated to avoid
// crashes if user presses back after going to a related content from here
purgeLoadingReactionsTask();
}
use of com.odysee.app.MainActivity in project odysee-android by OdyseeTeam.
the class FileViewFragment method onLandscapeOrientationEntered.
@Override
public void onLandscapeOrientationEntered() {
Context context = getContext();
if (context instanceof MainActivity) {
MainActivity activity = (MainActivity) context;
if (activity.isEnteringPIPMode() || activity.isInPictureInPictureMode()) {
return;
}
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (actualClaim != null && actualClaim.isPlayable() && !activity.isInFullscreenMode()) {
enableFullScreenMode();
}
}
}
use of com.odysee.app.MainActivity in project odysee-android by OdyseeTeam.
the class FileViewFragment method onContextItemSelected.
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getGroupId() == FILE_CONTEXT_GROUP_ID && item.getItemId() == R.id.action_block) {
if (relatedContentAdapter != null) {
int position = relatedContentAdapter.getPosition();
Claim claim = relatedContentAdapter.getItems().get(position);
if (claim != null && claim.getSigningChannel() != null) {
Claim channel = claim.getSigningChannel();
Context context = getContext();
if (context instanceof MainActivity) {
((MainActivity) context).handleBlockChannel(channel);
}
}
}
return true;
}
if (item.getGroupId() == Helper.PLAYBACK_SPEEDS_GROUP_ID) {
int speed = item.getItemId();
if (MainActivity.appPlayer != null) {
setPlaybackSpeed(MainActivity.appPlayer, speed);
return true;
}
} else if (item.getGroupId() == Helper.QUALITIES_GROUP_ID) {
loadingQualityChanged = true;
int quality = item.getItemId();
if (MainActivity.appPlayer != null) {
setPlayerQuality(MainActivity.appPlayer, quality);
return true;
}
}
return false;
}
use of com.odysee.app.MainActivity in project odysee-android by OdyseeTeam.
the class FileViewFragment method onResume.
/*
public void openClaimUrl(String url) {
resetViewCount();
resetFee();
currentUrl = url;
ClaimCacheKey key = new ClaimCacheKey();
key.setUrl(currentUrl);
Claim oldClaim = claim;
claim = null;
if (Lbry.claimCache.containsKey(key)) {
claim = Lbry.claimCache.get(key);
if (oldClaim != null && oldClaim.getClaimId().equalsIgnoreCase(claim.getClaimId())) {
// same claim
return;
}
} else {
resolveUrl(currentUrl);
}
resetMedia();
onNewClaim(currentUrl);
Helper.setWunderbarValue(currentUrl, getContext());
if (claim != null) {
Helper.saveViewHistory(url, claim);
if (Helper.isClaimBlocked(claim)) {
renderClaimBlocked();
} else {
checkAndLoadRelatedContent();
checkAndLoadComments();
renderClaim();
}
}
}
public void resetMedia() {
View root = getView();
if (root != null) {
PlayerView view = root.findViewById(R.id.file_view_exoplayer_view);
view.setShutterBackgroundColor(Color.BLACK);
root.findViewById(R.id.file_view_exoplayer_container).setVisibility(View.GONE);
}
if (MainActivity.appPlayer != null) {
MainActivity.appPlayer.stop();
}
resetPlayer();
}
*/
@Override
public void onResume() {
super.onResume();
checkParams();
Context context = getContext();
Helper.setWunderbarValue(currentUrl, context);
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (context instanceof MainActivity) {
MainActivity activity = (MainActivity) context;
LbryAnalytics.setCurrentScreen(activity, "File", "File");
activity.updateCurrentDisplayFragment(this);
if (actualClaim != null && actualClaim.isPlayable() && activity.isInFullscreenMode()) {
enableFullScreenMode();
}
activity.findViewById(R.id.appbar).setFitsSystemWindows(false);
activity.refreshChannelCreationRequired(getView());
}
if (MainActivity.appPlayer != null) {
if (MainActivity.playerReassigned) {
setPlayerForPlayerView();
MainActivity.playerReassigned = false;
}
View root = getView();
if (root != null) {
PlayerView playerView = root.findViewById(R.id.file_view_exoplayer_view);
if (playerView.getPlayer() == null) {
playerView.setPlayer(MainActivity.appPlayer);
}
}
updatePlaybackSpeedView(root);
updateQualityView(root);
loadAndScheduleDurations();
}
checkOwnClaim();
fetchChannels();
applyFilterForBlockedChannels(Lbryio.blockedChannels);
}
use of com.odysee.app.MainActivity in project odysee-android by OdyseeTeam.
the class FileViewFragment method initUi.
@SuppressWarnings("ClickableViewAccessibility")
private void initUi(View root) {
buttonPublishSomething.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Context context = getContext();
if (!Helper.isNullOrEmpty(currentUrl) && context instanceof MainActivity) {
LbryUri uri = LbryUri.tryParse(currentUrl);
if (uri != null) {
Map<String, Object> params = new HashMap<>();
params.put("suggestedUrl", uri.getStreamName());
// ((MainActivity) context).openFragment(PublishFragment.class, true, NavMenuItem.ID_ITEM_NEW_PUBLISH, params);
}
}
}
});
root.findViewById(R.id.file_view_title_area).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ImageView descIndicator = root.findViewById(R.id.file_view_desc_toggle_arrow);
View descriptionArea = root.findViewById(R.id.file_view_description_area);
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
boolean hasDescription = actualClaim != null && !Helper.isNullOrEmpty(actualClaim.getDescription());
boolean hasTags = actualClaim != null && actualClaim.getTags() != null && actualClaim.getTags().size() > 0;
if (descriptionArea.getVisibility() != View.VISIBLE) {
if (hasDescription || hasTags) {
descriptionArea.setVisibility(View.VISIBLE);
}
descIndicator.setImageResource(R.drawable.ic_arrow_dropup);
} else {
descriptionArea.setVisibility(View.GONE);
descIndicator.setImageResource(R.drawable.ic_arrow_dropdown);
}
}
});
root.findViewById(R.id.file_view_action_like).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AccountManager am = AccountManager.get(root.getContext());
Account odyseeAccount = Helper.getOdyseeAccount(am.getAccounts());
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (actualClaim != null && odyseeAccount != null) {
react(actualClaim, true);
}
}
});
root.findViewById(R.id.file_view_action_dislike).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AccountManager am = AccountManager.get(root.getContext());
Account odyseeAccount = Helper.getOdyseeAccount(am.getAccounts());
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (actualClaim != null && odyseeAccount != null) {
react(actualClaim, false);
}
}
});
root.findViewById(R.id.file_view_action_share).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (actualClaim != null) {
try {
String shareUrl = LbryUri.parse(!Helper.isNullOrEmpty(actualClaim.getCanonicalUrl()) ? actualClaim.getCanonicalUrl() : (!Helper.isNullOrEmpty(actualClaim.getShortUrl()) ? actualClaim.getShortUrl() : actualClaim.getPermanentUrl())).toOdyseeString();
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, shareUrl);
MainActivity.startingShareActivity = true;
Intent shareUrlIntent = Intent.createChooser(shareIntent, getString(R.string.share_lbry_content));
shareUrlIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(shareUrlIntent);
} catch (LbryUriException ex) {
// pass
}
}
}
});
root.findViewById(R.id.file_view_action_tip).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MainActivity activity = (MainActivity) getActivity();
if (activity != null && activity.isSignedIn()) {
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (actualClaim != null) {
CreateSupportDialogFragment dialog = CreateSupportDialogFragment.newInstance(actualClaim, (amount, isTip) -> {
double sentAmount = amount.doubleValue();
String message = getResources().getQuantityString(isTip ? R.plurals.you_sent_a_tip : R.plurals.you_sent_a_support, sentAmount == 1.0 ? 1 : 2, new DecimalFormat("#,###.##").format(sentAmount));
Snackbar.make(root.findViewById(R.id.file_view_claim_display_area), message, Snackbar.LENGTH_LONG).show();
});
Context context = getContext();
if (context instanceof MainActivity) {
dialog.show(((MainActivity) context).getSupportFragmentManager(), CreateSupportDialogFragment.TAG);
}
}
} else {
if (activity != null) {
activity.simpleSignIn(0);
}
}
}
});
root.findViewById(R.id.file_view_action_repost).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (actualClaim != null) {
RepostClaimDialogFragment dialog = RepostClaimDialogFragment.newInstance(actualClaim, claim -> {
Context context = getContext();
if (context instanceof MainActivity) {
((MainActivity) context).showMessage(R.string.content_successfully_reposted);
}
});
Context context = getContext();
if (context instanceof MainActivity) {
dialog.show(((MainActivity) context).getSupportFragmentManager(), RepostClaimDialogFragment.TAG);
}
}
}
});
root.findViewById(R.id.file_view_action_edit).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Context context = getContext();
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (actualClaim != null && context instanceof MainActivity) {
((MainActivity) context).openPublishForm(actualClaim);
}
}
});
root.findViewById(R.id.file_view_action_delete).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (actualClaim != null) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext()).setTitle(R.string.delete_file).setMessage(R.string.confirm_delete_file_message).setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
deleteClaimFile();
}
}).setNegativeButton(R.string.no, null);
builder.show();
}
}
});
root.findViewById(R.id.file_view_action_unpublish).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (actualClaim != null) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext()).setTitle(R.string.delete_content).setMessage(R.string.confirm_delete_content_message).setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
deleteCurrentClaim();
}
}).setNegativeButton(R.string.no, null);
builder.show();
}
}
});
root.findViewById(R.id.file_view_action_download).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (actualClaim != null) {
if (downloadInProgress) {
onDownloadAborted();
} else {
checkStoragePermissionAndStartDownload();
}
}
}
});
root.findViewById(R.id.file_view_action_report).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (actualClaim != null) {
Context context = getContext();
CustomTabColorSchemeParams.Builder ctcspb = new CustomTabColorSchemeParams.Builder();
ctcspb.setToolbarColor(ContextCompat.getColor(context, R.color.colorPrimary));
CustomTabColorSchemeParams ctcsp = ctcspb.build();
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder().setDefaultColorSchemeParams(ctcsp);
CustomTabsIntent intent = builder.build();
intent.launchUrl(context, Uri.parse(String.format("https://odysee.com/$/report_content?claimId=%s", actualClaim.getClaimId())));
}
}
});
root.findViewById(R.id.player_toggle_cast).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
toggleCast();
}
});
PlayerView playerView = root.findViewById(R.id.file_view_exoplayer_view);
View playbackSpeedContainer = playerView.findViewById(R.id.player_playback_speed);
TextView textPlaybackSpeed = playerView.findViewById(R.id.player_playback_speed_label);
View qualityContainer = playerView.findViewById(R.id.player_quality);
TextView textQuality = playerView.findViewById(R.id.player_quality_label);
textPlaybackSpeed.setText(DEFAULT_PLAYBACK_SPEED);
textQuality.setText(AUTO_QUALITY_STRING);
playbackSpeedContainer.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
Helper.buildPlaybackSpeedMenu(contextMenu);
}
});
playbackSpeedContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Context context = getContext();
if (context instanceof MainActivity) {
((MainActivity) context).openContextMenu(playbackSpeedContainer);
}
}
});
qualityContainer.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
if (MainActivity.appPlayer != null) {
Helper.buildQualityMenu(contextMenu, MainActivity.appPlayer, MainActivity.videoIsTranscoded);
}
}
});
qualityContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = getContext();
if (context instanceof MainActivity) {
((MainActivity) context).openContextMenu(qualityContainer);
}
}
});
playerView.findViewById(R.id.player_toggle_fullscreen).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// check full screen mode
if (isInFullscreenMode()) {
disableFullScreenMode();
} else {
enableFullScreenMode();
}
}
});
playerView.findViewById(R.id.player_skip_back_10).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (MainActivity.appPlayer != null) {
MainActivity.appPlayer.seekTo(Math.max(0, MainActivity.appPlayer.getCurrentPosition() - 10000));
}
}
});
playerView.findViewById(R.id.player_skip_forward_10).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (MainActivity.appPlayer != null) {
MainActivity.appPlayer.seekTo(MainActivity.appPlayer.getCurrentPosition() + 10000);
}
}
});
root.findViewById(R.id.file_view_publisher_info_area).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Claim actualClaim = collectionClaimItem != null ? collectionClaimItem : fileClaim;
if (actualClaim != null && actualClaim.getSigningChannel() != null) {
removeNotificationAsSource();
Claim publisher = actualClaim.getSigningChannel();
Context context = getContext();
if (context instanceof MainActivity) {
((MainActivity) context).openChannelClaim(publisher);
}
}
}
});
View buttonFollow = root.findViewById(R.id.file_view_icon_follow);
View buttonUnfollow = root.findViewById(R.id.file_view_icon_unfollow);
View buttonBell = root.findViewById(R.id.file_view_icon_bell);
buttonFollow.setOnClickListener(followUnfollowListener);
buttonUnfollow.setOnClickListener(followUnfollowListener);
buttonBell.setOnClickListener(bellIconListener);
commentChannelSpinnerAdapter = new InlineChannelSpinnerAdapter(getContext(), R.layout.spinner_item_channel, new ArrayList<>());
commentChannelSpinnerAdapter.addPlaceholder(false);
initCommentForm(root);
expandButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Prevents crash for when comment list isn't loaded yet but user tries to expand.
if (commentListAdapter != null) {
switchCommentListVisibility(commentListAdapter.isCollapsed());
commentListAdapter.switchExpandedState();
}
}
});
singleCommentRoot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
expandButton.performClick();
}
});
RecyclerView relatedContentList = root.findViewById(R.id.file_view_related_content_list);
RecyclerView commentsList = root.findViewById(R.id.file_view_comments_list);
relatedContentList.setNestedScrollingEnabled(false);
commentsList.setNestedScrollingEnabled(false);
LinearLayoutManager relatedContentListLLM = new LinearLayoutManager(getContext());
LinearLayoutManager commentsListLLM = new LinearLayoutManager(getContext());
relatedContentList.setLayoutManager(relatedContentListLLM);
commentsList.setLayoutManager(commentsListLLM);
GestureDetector.SimpleOnGestureListener gestureListener = new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
ImageView seekOverlay = root.findViewById(R.id.seek_overlay);
int width = playerView.getWidth();
float eventX = e.getX();
if (eventX < width / 3.0) {
if (MainActivity.appPlayer != null) {
MainActivity.appPlayer.seekTo(Math.max(0, MainActivity.appPlayer.getCurrentPosition() - 10000));
seekOverlay.setVisibility(View.VISIBLE);
seekOverlay.setImageResource(R.drawable.ic_rewind);
}
} else if (eventX > width * 2.0 / 3.0) {
if (MainActivity.appPlayer != null) {
MainActivity.appPlayer.seekTo(MainActivity.appPlayer.getCurrentPosition() + 10000);
seekOverlay.setVisibility(View.VISIBLE);
seekOverlay.setImageResource(R.drawable.ic_forward);
}
} else {
return true;
}
if (seekOverlayHandler == null) {
seekOverlayHandler = new Handler();
} else {
// Clear pending messages
seekOverlayHandler.removeCallbacksAndMessages(null);
}
seekOverlayHandler.postDelayed(() -> {
seekOverlay.setVisibility(View.GONE);
}, 500);
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
if (playerView.isControllerVisible()) {
playerView.hideController();
} else {
playerView.showController();
}
return true;
}
};
GestureDetector detector = new GestureDetector(getContext(), gestureListener);
playerView.setOnTouchListener((view, motionEvent) -> {
detector.onTouchEvent(motionEvent);
return true;
});
}
Aggregations