@Override public void onClick(final Message currentMessage) { if (document.getSource() instanceof FileRemoteSource) { FileRemoteSource remoteSource = (FileRemoteSource) document.getSource(); final FileReference location = remoteSource.getFileReference(); messenger() .requestState( location.getFileId(), new FileCallback() { @Override public void onNotDownloaded() { messenger().startDownloading(location); } @Override public void onDownloading(float progress) { messenger().cancelDownloading(location.getFileId()); } @Override public void onDownloaded(final FileSystemReference reference) { MVVMEngine.runOnUiThread( new Runnable() { @Override public void run() { Activity activity = getAdapter().getMessagesFragment().getActivity(); activity.startActivity( Intents.openDoc(document.getName(), reference.getDescriptor())); } }); } }); } else if (document.getSource() instanceof FileLocalSource) { messenger() .requestUploadState( currentMessage.getRid(), new UploadFileCallback() { @Override public void onNotUploading() { messenger().resumeUpload(currentMessage.getRid()); } @Override public void onUploading(float progress) { messenger().pauseUpload(currentMessage.getRid()); } @Override public void onUploaded() { // Nothing to do } }); } }
@Override protected void bindData(Message message, boolean isUpdated) { document = (DocumentContent) message.getContent(); // Content data fileName.setText(document.getName()); fileSize.setText( messenger().getFormatter().formatFileSize(document.getSource().getSize()) + " " + document.getExt().toUpperCase()); // region File icon if (isUpdated) { boolean isAppliedThumb = false; if (document.getFastThumb() != null) { try { Bitmap img = ImageLoading.loadBitmap(document.getFastThumb().getImage()); fileIcon.setImageBitmap(img); fileIcon.setScaleType(ImageView.ScaleType.FIT_CENTER); isAppliedThumb = true; } catch (ImageLoadException e) { e.printStackTrace(); } } if (!isAppliedThumb) { int type = FileTypes.getType(document.getExt()); switch (type) { default: case FileTypes.TYPE_UNKNOWN: fileIcon.setImageResource(R.drawable.picker_unknown); break; case FileTypes.TYPE_APK: fileIcon.setImageResource(R.drawable.picker_apk); break; case FileTypes.TYPE_MUSIC: fileIcon.setImageResource(R.drawable.picker_music); break; case FileTypes.TYPE_PICTURE: fileIcon.setImageResource(R.drawable.picker_unknown); break; case FileTypes.TYPE_DOC: fileIcon.setImageResource(R.drawable.picker_doc); break; case FileTypes.TYPE_RAR: fileIcon.setImageResource(R.drawable.picker_rar); break; case FileTypes.TYPE_VIDEO: fileIcon.setImageResource(R.drawable.picker_video); break; case FileTypes.TYPE_ZIP: fileIcon.setImageResource(R.drawable.picker_zip); break; case FileTypes.TYPE_XLS: fileIcon.setImageResource(R.drawable.picker_xls); break; case FileTypes.TYPE_PPT: fileIcon.setImageResource(R.drawable.picker_ppt); break; case FileTypes.TYPE_CSV: fileIcon.setImageResource(R.drawable.picker_csv); break; case FileTypes.TYPE_HTM: fileIcon.setImageResource(R.drawable.picker_htm); break; case FileTypes.TYPE_HTML: fileIcon.setImageResource(R.drawable.picker_html); break; case FileTypes.TYPE_PDF: fileIcon.setImageResource(R.drawable.picker_pdf); break; } fileIcon.setScaleType(ImageView.ScaleType.CENTER); } } // endregion // Update view boolean needRebind = false; if (isUpdated) { // Resetting binding if (downloadFileVM != null) { downloadFileVM.detach(); downloadFileVM = null; } if (uploadFileVM != null) { uploadFileVM.detach(); uploadFileVM = null; } needRebind = true; } else { if (document.getSource() instanceof FileLocalSource) { if (uploadFileVM == null && downloadFileVM != null) { downloadFileVM.detach(); downloadFileVM = null; needRebind = true; } } else if (document.getSource() instanceof FileRemoteSource) { if (uploadFileVM != null && downloadFileVM == null) { uploadFileVM.detach(); uploadFileVM = null; needRebind = true; } } } if (downloadFileVM == null && uploadFileVM == null) { needRebind = true; } if (needRebind) { downloadIcon.setVisibility(View.GONE); progressView.setVisibility(View.GONE); progressValue.setVisibility(View.GONE); fileIcon.setVisibility(View.GONE); menu.setVisibility(View.GONE); status.setVisibility(View.GONE); if (document.getSource() instanceof FileRemoteSource) { FileRemoteSource remoteSource = (FileRemoteSource) document.getSource(); boolean autoDownload = remoteSource.getFileReference().getFileSize() <= 1024 * 1024; // < 1MB downloadFileVM = messenger() .bindFile(remoteSource.getFileReference(), autoDownload, new DownloadVMCallback()); } else if (document.getSource() instanceof FileLocalSource) { uploadFileVM = messenger().bindUpload(message.getRid(), new UploadVMCallback()); } } }