示例#1
0
  @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
                }
              });
    }
  }
示例#2
0
  @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());
      }
    }
  }