use of com.owncloud.android.datamodel.OCFile in project android by nextcloud.
the class FileOperationsHelper method setPictureAs.
public void setPictureAs(OCFile file, View view) {
if (file != null) {
Context context = MainApp.getAppContext();
Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
Uri uri;
try {
if (file.isDown()) {
File externalFile = new File(file.getStoragePath());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
uri = FileProvider.getUriForFile(context, context.getResources().getString(R.string.file_provider_authority), externalFile);
} else {
uri = Uri.fromFile(externalFile);
}
} else {
uri = Uri.parse(UriUtils.URI_CONTENT_SCHEME + context.getResources().getString(R.string.image_cache_provider_authority) + file.getRemotePath());
}
intent.setDataAndType(uri, file.getMimeType());
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
fileActivity.startActivityForResult(Intent.createChooser(intent, fileActivity.getString(R.string.set_as)), 200);
intent.setDataAndType(uri, file.getMimeType());
} catch (ActivityNotFoundException exception) {
DisplayUtils.showSnackMessage(view, R.string.picture_set_as_no_app);
}
} else {
Log_OC.wtf(TAG, "Trying to send a NULL OCFile");
}
}
use of com.owncloud.android.datamodel.OCFile in project android by nextcloud.
the class FileOperationsHelper method copyFiles.
/**
* Start operations to copy one or several files
*
* @param files Files to copy
* @param targetFolder Folder where the files while be copied into
*/
public void copyFiles(Collection<OCFile> files, OCFile targetFolder) {
for (OCFile file : files) {
Intent service = new Intent(fileActivity, OperationsService.class);
service.setAction(OperationsService.ACTION_COPY_FILE);
service.putExtra(OperationsService.EXTRA_NEW_PARENT_PATH, targetFolder.getRemotePath());
service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
service.putExtra(OperationsService.EXTRA_ACCOUNT, fileActivity.getAccount());
mWaitingForOpId = fileActivity.getOperationsServiceBinder().queueNewOperation(service);
}
fileActivity.showLoadingDialog(fileActivity.getString(R.string.wait_a_moment));
}
use of com.owncloud.android.datamodel.OCFile in project android by nextcloud.
the class PreviewImagePagerAdapter method getItem.
@NonNull
public Fragment getItem(int i) {
OCFile file = getFileAt(i);
Fragment fragment;
if (file == null) {
fragment = PreviewImageErrorFragment.newInstance();
} else if (file.isDown()) {
fragment = PreviewImageFragment.newInstance(file, mObsoletePositions.contains(i), false);
} else {
if (mDownloadErrors.remove(i)) {
fragment = FileDownloadFragment.newInstance(file, user, true);
((FileDownloadFragment) fragment).setError(true);
} else {
if (file.isEncrypted()) {
fragment = FileDownloadFragment.newInstance(file, user, mObsoletePositions.contains(i));
} else {
fragment = PreviewImageFragment.newInstance(file, mObsoletePositions.contains(i), true);
}
}
}
mObsoletePositions.remove(i);
return fragment;
}
use of com.owncloud.android.datamodel.OCFile in project android by nextcloud.
the class PreviewImageActivity method onPageSelected.
/**
* This method will be invoked when a new page becomes selected. Animation is not necessarily
* complete.
*
* @param position Position index of the new selected page
*/
@Override
public void onPageSelected(int position) {
mSavedPosition = position;
mHasSavedPosition = true;
if (mDownloaderBinder == null) {
mRequestWaitingForBinder = true;
} else {
OCFile currentFile = mPreviewImagePagerAdapter.getFileAt(position);
if (currentFile != null) {
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle(currentFile.getFileName());
}
setDrawerIndicatorEnabled(false);
if (currentFile.isEncrypted() && !currentFile.isDown() && !mPreviewImagePagerAdapter.pendingErrorAt(position)) {
requestForDownload(currentFile);
}
// Call to reset image zoom to initial state
// ((PreviewImagePagerAdapter) mViewPager.getAdapter()).resetZoom();
}
}
}
use of com.owncloud.android.datamodel.OCFile in project android by nextcloud.
the class OCFileListAdapter method onBindViewHolder.
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (holder instanceof OCFileListFooterViewHolder) {
OCFileListFooterViewHolder footerViewHolder = (OCFileListFooterViewHolder) holder;
footerViewHolder.binding.footerText.setText(getFooterText());
footerViewHolder.binding.loadingProgressBar.getIndeterminateDrawable().setColorFilter(ThemeColorUtils.primaryColor(activity), PorterDuff.Mode.SRC_IN);
footerViewHolder.binding.loadingProgressBar.setVisibility(ocFileListFragmentInterface.isLoading() ? View.VISIBLE : View.GONE);
} else if (holder instanceof OCFileListHeaderViewHolder) {
OCFileListHeaderViewHolder headerViewHolder = (OCFileListHeaderViewHolder) holder;
String text = currentDirectory.getRichWorkspace();
PreviewTextFragment.setText(headerViewHolder.binding.headerText, text, null, activity, true, true);
headerViewHolder.binding.headerView.setOnClickListener(v -> ocFileListFragmentInterface.onHeaderClicked());
} else {
ListGridImageViewHolder gridViewHolder = (ListGridImageViewHolder) holder;
OCFile file = getItem(position);
boolean gridImage = MimeTypeUtil.isImage(file) || MimeTypeUtil.isVideo(file);
gridViewHolder.getThumbnail().setTag(file.getFileId());
setThumbnail(file, gridViewHolder.getThumbnail(), user, mStorageManager, asyncTasks, gridView, activity, gridViewHolder.getShimmerThumbnail(), preferences);
if (highlightedItem != null && file.getFileId() == highlightedItem.getFileId()) {
gridViewHolder.getItemLayout().setBackgroundColor(activity.getResources().getColor(R.color.selected_item_background));
} else if (isCheckedFile(file)) {
gridViewHolder.getItemLayout().setBackgroundColor(activity.getResources().getColor(R.color.selected_item_background));
gridViewHolder.getCheckbox().setImageDrawable(ThemeDrawableUtils.tintDrawable(R.drawable.ic_checkbox_marked, ThemeColorUtils.primaryColor(activity)));
} else {
gridViewHolder.getItemLayout().setBackgroundColor(activity.getResources().getColor(R.color.bg_default));
gridViewHolder.getCheckbox().setImageResource(R.drawable.ic_checkbox_blank_outline);
}
gridViewHolder.getItemLayout().setOnClickListener(v -> ocFileListFragmentInterface.onItemClicked(file));
if (!hideItemOptions) {
gridViewHolder.getItemLayout().setLongClickable(true);
gridViewHolder.getItemLayout().setOnLongClickListener(v -> ocFileListFragmentInterface.onLongItemClicked(file));
}
// unread comments
if (file.getUnreadCommentsCount() > 0) {
gridViewHolder.getUnreadComments().setVisibility(View.VISIBLE);
gridViewHolder.getUnreadComments().setOnClickListener(view -> ocFileListFragmentInterface.showActivityDetailView(file));
} else {
gridViewHolder.getUnreadComments().setVisibility(View.GONE);
}
if (holder instanceof ListItemViewHolder) {
ListItemViewHolder itemViewHolder = (ListItemViewHolder) holder;
if ((file.isSharedWithMe() || file.isSharedWithSharee()) && !multiSelect && !gridView && !hideItemOptions) {
itemViewHolder.getSharedAvatars().setVisibility(View.VISIBLE);
itemViewHolder.getSharedAvatars().removeAllViews();
String fileOwner = file.getOwnerId();
List<ShareeUser> sharees = file.getSharees();
// use fileOwner if not oneself, then add at first
ShareeUser fileOwnerSharee = new ShareeUser(fileOwner, file.getOwnerDisplayName(), ShareType.USER);
if (!TextUtils.isEmpty(fileOwner) && !fileOwner.equals(userId) && !sharees.contains(fileOwnerSharee)) {
sharees.add(fileOwnerSharee);
}
Collections.reverse(sharees);
Log_OC.d(this, "sharees of " + file.getFileName() + ": " + sharees);
itemViewHolder.getSharedAvatars().setAvatars(user, sharees);
itemViewHolder.getSharedAvatars().setOnClickListener(view -> ocFileListFragmentInterface.onShareIconClick(file));
} else {
itemViewHolder.getSharedAvatars().setVisibility(View.GONE);
itemViewHolder.getSharedAvatars().removeAllViews();
}
// npe fix: looks like file without local storage path somehow get here
final String storagePath = file.getStoragePath();
if (onlyOnDevice && storagePath != null) {
File localFile = new File(storagePath);
long localSize;
if (localFile.isDirectory()) {
localSize = FileStorageUtils.getFolderSize(localFile);
} else {
localSize = localFile.length();
}
itemViewHolder.getFileSize().setText(DisplayUtils.bytesToHumanReadable(localSize));
} else {
itemViewHolder.getFileSize().setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));
}
itemViewHolder.getLastModification().setText(DisplayUtils.getRelativeTimestamp(activity, file.getModificationTimestamp()));
if (multiSelect || gridView || hideItemOptions) {
itemViewHolder.getOverflowMenu().setVisibility(View.GONE);
} else {
itemViewHolder.getOverflowMenu().setVisibility(View.VISIBLE);
itemViewHolder.getOverflowMenu().setOnClickListener(view -> ocFileListFragmentInterface.onOverflowIconClicked(file, view));
}
}
// default first
gridViewHolder.getLocalFileIndicator().setVisibility(View.INVISIBLE);
if (showMetadata) {
OperationsService.OperationsServiceBinder operationsServiceBinder = transferServiceGetter.getOperationsServiceBinder();
FileDownloader.FileDownloaderBinder fileDownloaderBinder = transferServiceGetter.getFileDownloaderBinder();
FileUploader.FileUploaderBinder fileUploaderBinder = transferServiceGetter.getFileUploaderBinder();
if (operationsServiceBinder != null && operationsServiceBinder.isSynchronizing(user, file)) {
// synchronizing
gridViewHolder.getLocalFileIndicator().setImageResource(R.drawable.ic_synchronizing);
gridViewHolder.getLocalFileIndicator().setVisibility(View.VISIBLE);
} else if (fileDownloaderBinder != null && fileDownloaderBinder.isDownloading(user, file)) {
// downloading
gridViewHolder.getLocalFileIndicator().setImageResource(R.drawable.ic_synchronizing);
gridViewHolder.getLocalFileIndicator().setVisibility(View.VISIBLE);
} else if (fileUploaderBinder != null && fileUploaderBinder.isUploading(user, file)) {
// uploading
gridViewHolder.getLocalFileIndicator().setImageResource(R.drawable.ic_synchronizing);
gridViewHolder.getLocalFileIndicator().setVisibility(View.VISIBLE);
} else if (file.getEtagInConflict() != null) {
// conflict
gridViewHolder.getLocalFileIndicator().setImageResource(R.drawable.ic_synchronizing_error);
gridViewHolder.getLocalFileIndicator().setVisibility(View.VISIBLE);
} else if (file.isDown()) {
gridViewHolder.getLocalFileIndicator().setImageResource(R.drawable.ic_synced);
gridViewHolder.getLocalFileIndicator().setVisibility(View.VISIBLE);
}
gridViewHolder.getFavorite().setVisibility(file.isFavorite() ? View.VISIBLE : View.GONE);
}
if (multiSelect) {
gridViewHolder.getCheckbox().setVisibility(View.VISIBLE);
} else {
gridViewHolder.getCheckbox().setVisibility(View.GONE);
}
if (holder instanceof ListGridItemViewHolder) {
ListGridItemViewHolder gridItemViewHolder = (ListGridItemViewHolder) holder;
gridItemViewHolder.getFileName().setText(file.getDecryptedFileName());
if (gridView && gridImage) {
gridItemViewHolder.getFileName().setVisibility(View.GONE);
} else {
if (gridView && ocFileListFragmentInterface.getColumnsCount() > showFilenameColumnThreshold) {
gridItemViewHolder.getFileName().setVisibility(View.GONE);
} else {
gridItemViewHolder.getFileName().setVisibility(View.VISIBLE);
}
}
}
if (gridView || hideItemOptions || (file.isFolder() && !file.canReshare())) {
gridViewHolder.getShared().setVisibility(View.GONE);
} else {
showShareIcon(gridViewHolder, file);
}
}
}
Aggregations