Search in sources :

Example 6 with OCUpload

use of com.owncloud.android.db.OCUpload in project android by owncloud.

the class UploadListFragment method onChildClick.

@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
    boolean handled = false;
    OCUpload OCUpload = (OCUpload) mAdapter.getChild(groupPosition, childPosition);
    if (OCUpload != null) {
        // notify the click to container Activity
        handled = mContainerActivity.onUploadItemClick(OCUpload);
    } else {
        Log_OC.w(TAG, "Null object in ListAdapter!!");
    }
    return handled;
}
Also used : OCUpload(com.owncloud.android.db.OCUpload)

Example 7 with OCUpload

use of com.owncloud.android.db.OCUpload in project android by owncloud.

the class ExpandableUploadListAdapter method getView.

private View getView(OCUpload[] uploadsItems, int position, View convertView, ViewGroup parent) {
    View view = convertView;
    if (view == null) {
        LayoutInflater inflator = (LayoutInflater) mParentActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflator.inflate(R.layout.upload_list_item, parent, false);
    }
    if (uploadsItems != null && uploadsItems.length > position) {
        final OCUpload upload = uploadsItems[position];
        // local file name
        TextView fileTextView = (TextView) view.findViewById(R.id.upload_name);
        File remoteFile = new File(upload.getRemotePath());
        String fileName = remoteFile.getName();
        if (fileName.length() == 0) {
            fileName = File.separator;
        }
        fileTextView.setText(fileName);
        // remote path to parent folder
        TextView pathTextView = (TextView) view.findViewById(R.id.upload_remote_path);
        String remoteParentPath = upload.getRemotePath();
        remoteParentPath = new File(remoteParentPath).getParent();
        pathTextView.setText(mParentActivity.getString(R.string.app_name) + remoteParentPath);
        // file size
        TextView fileSizeTextView = (TextView) view.findViewById(R.id.upload_file_size);
        fileSizeTextView.setText(DisplayUtils.bytesToHumanReadable(upload.getFileSize(), mParentActivity) + ", ");
        //* upload date
        TextView uploadDateTextView = (TextView) view.findViewById(R.id.upload_date);
        long updateTime = upload.getUploadEndTimestamp();
        CharSequence dateString = DisplayUtils.getRelativeDateTimeString(mParentActivity, updateTime, DateUtils.SECOND_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, 0);
        uploadDateTextView.setText(dateString);
        TextView accountNameTextView = (TextView) view.findViewById(R.id.upload_account);
        try {
            Account account = AccountUtils.getOwnCloudAccountByName(mParentActivity, upload.getAccountName());
            OwnCloudAccount oca = new OwnCloudAccount(account, mParentActivity);
            accountNameTextView.setText(oca.getDisplayName() + " @ " + DisplayUtils.convertIdn(account.name.substring(account.name.lastIndexOf("@") + 1), false));
        } catch (Exception e) {
            Log_OC.w(TAG, "Couldn't get display name for account, using old style");
            accountNameTextView.setText(upload.getAccountName());
        }
        TextView statusTextView = (TextView) view.findViewById(R.id.upload_status);
        ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.upload_progress_bar);
        /// Reset fields visibility
        uploadDateTextView.setVisibility(View.VISIBLE);
        pathTextView.setVisibility(View.VISIBLE);
        fileSizeTextView.setVisibility(View.VISIBLE);
        accountNameTextView.setVisibility(View.VISIBLE);
        statusTextView.setVisibility(View.VISIBLE);
        progressBar.setVisibility(View.GONE);
        /// Update information depending of upload details
        String status = getStatusText(upload);
        switch(upload.getUploadStatus()) {
            case UPLOAD_IN_PROGRESS:
                progressBar.setProgress(0);
                progressBar.setVisibility(View.VISIBLE);
                FileUploader.FileUploaderBinder binder = mParentActivity.getFileUploaderBinder();
                if (binder != null) {
                    if (binder.isUploadingNow(upload)) {
                        /// ... unbind the old progress bar, if any; ...
                        if (mProgressListener != null) {
                            binder.removeDatatransferProgressListener(mProgressListener, // the one that was added
                            mProgressListener.getUpload());
                        }
                        /// ... then, bind the current progress bar to listen for updates
                        mProgressListener = new ProgressListener(upload, progressBar);
                        binder.addDatatransferProgressListener(mProgressListener, upload);
                    } else {
                        /// not really uploading; stop listening progress if view is reused!
                        if (convertView != null && mProgressListener != null && mProgressListener.isWrapping(progressBar)) {
                            binder.removeDatatransferProgressListener(mProgressListener, // the one that was added
                            mProgressListener.getUpload());
                            mProgressListener = null;
                        }
                    }
                } else {
                    Log_OC.w(TAG, "FileUploaderBinder not ready yet for upload " + upload.getRemotePath());
                }
                uploadDateTextView.setVisibility(View.GONE);
                pathTextView.setVisibility(View.GONE);
                fileSizeTextView.setVisibility(View.GONE);
                progressBar.invalidate();
                break;
            case UPLOAD_FAILED:
                uploadDateTextView.setVisibility(View.GONE);
                break;
            case UPLOAD_SUCCEEDED:
                statusTextView.setVisibility(View.GONE);
                break;
        }
        statusTextView.setText(status);
        /// bind listeners to perform actions
        ImageButton rightButton = (ImageButton) view.findViewById(R.id.upload_right_button);
        if (upload.getUploadStatus() == UploadStatus.UPLOAD_IN_PROGRESS) {
            //Cancel
            rightButton.setImageResource(R.drawable.ic_action_cancel_grey);
            rightButton.setVisibility(View.VISIBLE);
            rightButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    FileUploader.FileUploaderBinder uploaderBinder = mParentActivity.getFileUploaderBinder();
                    if (uploaderBinder != null) {
                        uploaderBinder.cancel(upload);
                        refreshView();
                    }
                }
            });
        } else if (upload.getUploadStatus() == UploadStatus.UPLOAD_FAILED) {
            //Delete
            rightButton.setImageResource(R.drawable.ic_action_delete_grey);
            rightButton.setVisibility(View.VISIBLE);
            rightButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    mUploadsStorageManager.removeUpload(upload);
                    refreshView();
                }
            });
        } else {
            // UploadStatus.UPLOAD_SUCCESS
            rightButton.setVisibility(View.INVISIBLE);
        }
        // retry
        if (upload.getUploadStatus() == UploadStatus.UPLOAD_FAILED) {
            if (UploadResult.CREDENTIAL_ERROR.equals(upload.getLastResult())) {
                view.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        mParentActivity.getFileOperationsHelper().checkCurrentCredentials(upload.getAccount(mParentActivity));
                    }
                });
            } else {
                // not a credentials error
                view.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        File file = new File(upload.getLocalPath());
                        if (file.exists()) {
                            FileUploader.UploadRequester requester = new FileUploader.UploadRequester();
                            requester.retry(mParentActivity, upload);
                            refreshView();
                        } else {
                            final String message = String.format(mParentActivity.getString(R.string.local_file_not_found_toast));
                            Snackbar snackbar = Snackbar.make(v.getRootView().findViewById(android.R.id.content), message, Snackbar.LENGTH_LONG);
                            snackbar.show();
                        }
                    }
                });
            }
        } else {
            view.setOnClickListener(null);
        }
        /// Set icon or thumbnail
        ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail);
        fileIcon.setImageResource(R.drawable.file);
        /** Cancellation needs do be checked and done before changing the drawable in fileIcon, or
             * {@link ThumbnailsCacheManager#cancelPotentialWork} will NEVER cancel any task.
             **/
        OCFile fakeFileToCheatThumbnailsCacheManagerInterface = new OCFile(upload.getRemotePath());
        fakeFileToCheatThumbnailsCacheManagerInterface.setStoragePath(upload.getLocalPath());
        fakeFileToCheatThumbnailsCacheManagerInterface.setMimetype(upload.getMimeType());
        boolean allowedToCreateNewThumbnail = (ThumbnailsCacheManager.cancelPotentialThumbnailWork(fakeFileToCheatThumbnailsCacheManagerInterface, fileIcon));
        // TODO this code is duplicated; refactor to a common place
        if ((fakeFileToCheatThumbnailsCacheManagerInterface.isImage() && fakeFileToCheatThumbnailsCacheManagerInterface.getRemoteId() != null && upload.getUploadStatus() == UploadStatus.UPLOAD_SUCCEEDED)) {
            // Thumbnail in Cache?
            Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(String.valueOf(fakeFileToCheatThumbnailsCacheManagerInterface.getRemoteId()));
            if (thumbnail != null && !fakeFileToCheatThumbnailsCacheManagerInterface.needsUpdateThumbnail()) {
                fileIcon.setImageBitmap(thumbnail);
            } else {
                // generate new Thumbnail
                if (allowedToCreateNewThumbnail) {
                    final ThumbnailsCacheManager.ThumbnailGenerationTask task = new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon, mParentActivity.getStorageManager(), mParentActivity.getAccount());
                    if (thumbnail == null) {
                        thumbnail = ThumbnailsCacheManager.mDefaultImg;
                    }
                    final ThumbnailsCacheManager.AsyncThumbnailDrawable asyncDrawable = new ThumbnailsCacheManager.AsyncThumbnailDrawable(mParentActivity.getResources(), thumbnail, task);
                    fileIcon.setImageDrawable(asyncDrawable);
                    task.execute(fakeFileToCheatThumbnailsCacheManagerInterface);
                }
            }
            if ("image/png".equals(upload.getMimeType())) {
                fileIcon.setBackgroundColor(mParentActivity.getResources().getColor(R.color.background_color));
            }
        } else if (fakeFileToCheatThumbnailsCacheManagerInterface.isImage()) {
            File file = new File(upload.getLocalPath());
            // Thumbnail in Cache?
            Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(String.valueOf(file.hashCode()));
            if (thumbnail != null) {
                fileIcon.setImageBitmap(thumbnail);
            } else {
                // generate new Thumbnail
                if (allowedToCreateNewThumbnail) {
                    final ThumbnailsCacheManager.ThumbnailGenerationTask task = new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon);
                    if (thumbnail == null) {
                        thumbnail = ThumbnailsCacheManager.mDefaultImg;
                    }
                    final ThumbnailsCacheManager.AsyncThumbnailDrawable asyncDrawable = new ThumbnailsCacheManager.AsyncThumbnailDrawable(mParentActivity.getResources(), thumbnail, task);
                    fileIcon.setImageDrawable(asyncDrawable);
                    task.execute(file);
                    Log_OC.v(TAG, "Executing task to generate a new thumbnail");
                }
            }
            if ("image/png".equalsIgnoreCase(upload.getMimeType())) {
                fileIcon.setBackgroundColor(mParentActivity.getResources().getColor(R.color.background_color));
            }
        } else {
            fileIcon.setImageResource(MimetypeIconUtil.getFileTypeIconId(upload.getMimeType(), fileName));
        }
    }
    return view;
}
Also used : Account(android.accounts.Account) OwnCloudAccount(com.owncloud.android.lib.common.OwnCloudAccount) FileUploader(com.owncloud.android.files.services.FileUploader) OwnCloudAccount(com.owncloud.android.lib.common.OwnCloudAccount) OCFile(com.owncloud.android.datamodel.OCFile) OCUpload(com.owncloud.android.db.OCUpload) ImageButton(android.widget.ImageButton) Bitmap(android.graphics.Bitmap) ThumbnailsCacheManager(com.owncloud.android.datamodel.ThumbnailsCacheManager) TextView(android.widget.TextView) ImageView(android.widget.ImageView) ProgressBar(android.widget.ProgressBar) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) ExpandableListView(android.widget.ExpandableListView) OnDatatransferProgressListener(com.owncloud.android.lib.common.network.OnDatatransferProgressListener) LayoutInflater(android.view.LayoutInflater) OnClickListener(android.view.View.OnClickListener) OCFile(com.owncloud.android.datamodel.OCFile) File(java.io.File) Snackbar(android.support.design.widget.Snackbar)

Aggregations

OCUpload (com.owncloud.android.db.OCUpload)7 Account (android.accounts.Account)2 OCFile (com.owncloud.android.datamodel.OCFile)2 OwnCloudAccount (com.owncloud.android.lib.common.OwnCloudAccount)2 Cursor (android.database.Cursor)1 Bitmap (android.graphics.Bitmap)1 Message (android.os.Message)1 Parcelable (android.os.Parcelable)1 Snackbar (android.support.design.widget.Snackbar)1 LayoutInflater (android.view.LayoutInflater)1 View (android.view.View)1 OnClickListener (android.view.View.OnClickListener)1 ExpandableListView (android.widget.ExpandableListView)1 ImageButton (android.widget.ImageButton)1 ImageView (android.widget.ImageView)1 ProgressBar (android.widget.ProgressBar)1 TextView (android.widget.TextView)1 ThumbnailsCacheManager (com.owncloud.android.datamodel.ThumbnailsCacheManager)1 UploadsStorageManager (com.owncloud.android.datamodel.UploadsStorageManager)1 FileUploader (com.owncloud.android.files.services.FileUploader)1