Search in sources :

Example 56 with OCFile

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");
    }
}
Also used : Context(android.content.Context) ActivityNotFoundException(android.content.ActivityNotFoundException) Intent(android.content.Intent) Uri(android.net.Uri) OCFile(com.owncloud.android.datamodel.OCFile) File(java.io.File)

Example 57 with 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));
}
Also used : OCFile(com.owncloud.android.datamodel.OCFile) Intent(android.content.Intent)

Example 58 with OCFile

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;
}
Also used : OCFile(com.owncloud.android.datamodel.OCFile) FileFragment(com.owncloud.android.ui.fragment.FileFragment) Fragment(androidx.fragment.app.Fragment) NonNull(androidx.annotation.NonNull)

Example 59 with OCFile

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();
        }
    }
}
Also used : OCFile(com.owncloud.android.datamodel.OCFile)

Example 60 with OCFile

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);
        }
    }
}
Also used : User(com.nextcloud.client.account.User) ThumbnailsCacheManager(com.owncloud.android.datamodel.ThumbnailsCacheManager) RemoteFile(com.owncloud.android.lib.resources.files.model.RemoteFile) NonNull(androidx.annotation.NonNull) WindowManager(android.view.WindowManager) FrameLayout(android.widget.FrameLayout) ImageView(android.widget.ImageView) OCFile(com.owncloud.android.datamodel.OCFile) Drawable(android.graphics.drawable.Drawable) RemoteOperationResult(com.owncloud.android.lib.common.operations.RemoteOperationResult) Vector(java.util.Vector) OCShare(com.owncloud.android.lib.resources.shares.OCShare) AvatarGroupLayout(com.owncloud.android.ui.AvatarGroupLayout) Locale(java.util.Locale) Handler(android.os.Handler) Looper(android.os.Looper) View(android.view.View) FileSortOrder(com.owncloud.android.utils.FileSortOrder) RecyclerView(androidx.recyclerview.widget.RecyclerView) DisplayUtils(com.owncloud.android.utils.DisplayUtils) ThemeDrawableUtils(com.owncloud.android.utils.theme.ThemeDrawableUtils) AccountManager(android.accounts.AccountManager) ListHeaderBinding(com.owncloud.android.databinding.ListHeaderBinding) RefreshFolderOperation(com.owncloud.android.operations.RefreshFolderOperation) SearchType(com.owncloud.android.ui.fragment.SearchType) Set(java.util.Set) AppPreferences(com.nextcloud.client.preferences.AppPreferences) PorterDuff(android.graphics.PorterDuff) ViewGroup(android.view.ViewGroup) GridItemBinding(com.owncloud.android.databinding.GridItemBinding) Log_OC(com.owncloud.android.lib.common.utils.Log_OC) List(java.util.List) TextView(android.widget.TextView) GridImageBinding(com.owncloud.android.databinding.GridImageBinding) ShareType(com.owncloud.android.lib.resources.shares.ShareType) BitmapUtils(com.owncloud.android.utils.BitmapUtils) ThemeColorUtils(com.owncloud.android.utils.theme.ThemeColorUtils) Nullable(androidx.annotation.Nullable) MainApp(com.owncloud.android.MainApp) FileDataStorageManager(com.owncloud.android.datamodel.FileDataStorageManager) VirtualFolderType(com.owncloud.android.datamodel.VirtualFolderType) FileUploader(com.owncloud.android.files.services.FileUploader) MimeTypeUtil(com.owncloud.android.utils.MimeTypeUtil) ContentValues(android.content.ContentValues) R(com.owncloud.android.R) Context(android.content.Context) ResourcesCompat(androidx.core.content.res.ResourcesCompat) Filter(android.widget.Filter) ComponentsGetter(com.owncloud.android.ui.activity.ComponentsGetter) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) FileDownloader(com.owncloud.android.files.services.FileDownloader) LoaderImageView(com.elyeproj.loaderviewlibrary.LoaderImageView) OCFileListFragmentInterface(com.owncloud.android.ui.interfaces.OCFileListFragmentInterface) LayoutInflater(android.view.LayoutInflater) RemoteOperationFailedException(com.owncloud.android.operations.RemoteOperationFailedException) PreviewTextFragment(com.owncloud.android.ui.preview.PreviewTextFragment) Point(android.graphics.Point) TextUtils(android.text.TextUtils) ListItemBinding(com.owncloud.android.databinding.ListItemBinding) RemoteOperation(com.owncloud.android.lib.common.operations.RemoteOperation) ReadFileRemoteOperation(com.owncloud.android.lib.resources.files.ReadFileRemoteOperation) File(java.io.File) ListFooterBinding(com.owncloud.android.databinding.ListFooterBinding) OperationsService(com.owncloud.android.services.OperationsService) FileStorageUtils(com.owncloud.android.utils.FileStorageUtils) Bitmap(android.graphics.Bitmap) ShareeUser(com.owncloud.android.lib.resources.shares.ShareeUser) ProviderMeta(com.owncloud.android.db.ProviderMeta) Activity(android.app.Activity) Collections(java.util.Collections) VisibleForTesting(androidx.annotation.VisibleForTesting) Resources(android.content.res.Resources) OCFile(com.owncloud.android.datamodel.OCFile) ShareeUser(com.owncloud.android.lib.resources.shares.ShareeUser) List(java.util.List) ArrayList(java.util.ArrayList) RemoteFile(com.owncloud.android.lib.resources.files.model.RemoteFile) OCFile(com.owncloud.android.datamodel.OCFile) File(java.io.File)

Aggregations

OCFile (com.owncloud.android.datamodel.OCFile)307 File (java.io.File)56 Test (org.junit.Test)44 FileDataStorageManager (com.owncloud.android.datamodel.FileDataStorageManager)43 RemoteOperationResult (com.owncloud.android.lib.common.operations.RemoteOperationResult)40 ArrayList (java.util.ArrayList)28 Intent (android.content.Intent)27 OCFileListFragment (com.owncloud.android.ui.fragment.OCFileListFragment)22 OCUpload (com.owncloud.android.db.OCUpload)20 ScreenshotTest (com.owncloud.android.utils.ScreenshotTest)20 FileFragment (com.owncloud.android.ui.fragment.FileFragment)19 User (com.nextcloud.client.account.User)17 RemoteFile (com.owncloud.android.lib.resources.files.model.RemoteFile)16 Bundle (android.os.Bundle)13 Fragment (androidx.fragment.app.Fragment)12 RemoteFile (com.owncloud.android.lib.resources.files.RemoteFile)12 FileDetailFragment (com.owncloud.android.ui.fragment.FileDetailFragment)12 Account (android.accounts.Account)11 SuppressLint (android.annotation.SuppressLint)11 PreviewTextFragment (com.owncloud.android.ui.preview.PreviewTextFragment)11