Merge branch 'release-1.8' of https://github.com/owncloud/android into material_fab
authorAndy Scherzinger <info@andy-scherzinger.de>
Thu, 24 Sep 2015 07:46:23 +0000 (09:46 +0200)
committerAndy Scherzinger <info@andy-scherzinger.de>
Thu, 24 Sep 2015 07:46:23 +0000 (09:46 +0200)
1  2 
src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java

@@@ -37,6 -37,7 +37,7 @@@ import android.widget.TextView
  
  import com.owncloud.android.R;
  import com.owncloud.android.datamodel.ThumbnailsCacheManager;
+ import com.owncloud.android.lib.common.utils.Log_OC;
  import com.owncloud.android.utils.BitmapUtils;
  import com.owncloud.android.utils.DisplayUtils;
  import com.owncloud.android.utils.MimetypeIconUtil;
@@@ -46,7 -47,9 +47,9 @@@
   * in a local directory
   */
  public class LocalFileListAdapter extends BaseAdapter implements ListAdapter {
-     
+     private static final String TAG = LocalFileListAdapter.class.getSimpleName();
      private Context mContext;
      private File mDirectory;
      private File[] mFiles = null;
              fileName.setText(name);
              
              ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail);
+             /** Cancellation needs do be checked and done before changing the drawable in fileIcon, or
+              * {@link ThumbnailsCacheManager#cancelPotentialWork} will NEVER cancel any task.
+              **/
+             boolean allowedToCreateNewThumbnail = (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon));
              if (!file.isDirectory()) {
                  fileIcon.setImageResource(R.drawable.file);
              } else {
              fileIcon.setTag(file.hashCode());
  
              TextView fileSizeV = (TextView) view.findViewById(R.id.file_size);
 +            TextView fileSizeSeparatorV = (TextView) view.findViewById(R.id.file_separator);
              TextView lastModV = (TextView) view.findViewById(R.id.last_mod);
              ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);
              if (!file.isDirectory()) {
 +                fileSizeSeparatorV.setVisibility(View.VISIBLE);
                  fileSizeV.setVisibility(View.VISIBLE);
                  fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.length()));
  
                      checkBoxV.setVisibility(View.GONE);
                  } else {
                      if (parentList.isItemChecked(position)) {
 -                        checkBoxV.setImageResource(android.R.drawable.checkbox_on_background);
 +                        checkBoxV.setImageResource(R.drawable.ic_checkbox_marked);
                      } else {
 -                        checkBoxV.setImageResource(android.R.drawable.checkbox_off_background);
 +                        checkBoxV.setImageResource(R.drawable.ic_checkbox_blank_outline);
                      }
                      checkBoxV.setVisibility(View.VISIBLE);
                  }
                      } else {
  
                          // generate new Thumbnail
-                         if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) {
+                         if (allowedToCreateNewThumbnail) {
                              final ThumbnailsCacheManager.ThumbnailGenerationTask task =
                                      new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon);
                              if (thumbnail == null) {
                                        );
                              fileIcon.setImageDrawable(asyncDrawable);
                              task.execute(file);
-                         }
+                             Log_OC.v(TAG, "Executing task to generate a new thumbnail");
+                         } // else, already being generated, don't restart it
                      }
                  } else {
                      fileIcon.setImageResource(MimetypeIconUtil.getFileTypeIconId(null, file.getName()));
                  }  
  
              } else {
 +                fileSizeSeparatorV.setVisibility(View.GONE);
                  fileSizeV.setVisibility(View.GONE);
                  lastModV.setVisibility(View.GONE);
                  checkBoxV.setVisibility(View.GONE);