Merge branch 'material_buttons' of https://github.com/owncloud/android into beta
authorAndy Scherzinger <info@andy-scherzinger.de>
Wed, 4 Nov 2015 09:11:27 +0000 (10:11 +0100)
committerAndy Scherzinger <info@andy-scherzinger.de>
Wed, 4 Nov 2015 09:11:27 +0000 (10:11 +0100)
Conflicts:
src/com/owncloud/android/ui/adapter/FileListListAdapter.java

1  2 
src/com/owncloud/android/ui/adapter/FileListListAdapter.java

@@@ -25,19 -25,12 +25,19 @@@ package com.owncloud.android.ui.adapter
  \r
  \r
  import java.io.File;\r
 +import java.util.ArrayList;\r
 +import java.util.HashMap;\r
 +import java.util.Map;\r
  import java.util.Vector;\r
  \r
  import android.accounts.Account;\r
  import android.content.Context;\r
  import android.content.SharedPreferences;\r
  import android.graphics.Bitmap;\r
 +import android.graphics.Color;\r
 +import android.graphics.BitmapFactory;\r
 +import android.graphics.Canvas;\r
 +import android.graphics.Paint;\r
  import android.os.Build;\r
  import android.preference.PreferenceManager;\r
  import android.text.format.DateUtils;\r
@@@ -86,8 -79,6 +86,8 @@@ public class FileListListAdapter extend
      private enum ViewType {LIST_ITEM, GRID_IMAGE, GRID_ITEM };\r
  \r
      private SharedPreferences mAppPreferences;\r
 +\r
 +    private HashMap<Integer, Boolean> mSelection = new HashMap<Integer, Boolean>();\r
      \r
      public FileListListAdapter(\r
              boolean justFolders, \r
          ViewType viewType;\r
          if (!mGridMode){\r
              viewType = ViewType.LIST_ITEM;\r
 -        } else if (file.isImage()){\r
 +        } else if (file.isImage() || file.isVideo()){\r
              viewType = ViewType.GRID_IMAGE;\r
          } else {\r
              viewType = ViewType.GRID_ITEM;\r
                      TextView fileSizeV = (TextView) view.findViewById(R.id.file_size);\r
                      TextView fileSizeSeparatorV = (TextView) view.findViewById(R.id.file_separator);\r
                      TextView lastModV = (TextView) view.findViewById(R.id.last_mod);\r
 -                    ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);\r
 +\r
  \r
                      lastModV.setVisibility(View.VISIBLE);\r
                      lastModV.setText(showRelativeTimestamp(file));\r
  \r
 -                    checkBoxV.setVisibility(View.GONE);\r
  \r
                      fileSizeSeparatorV.setVisibility(View.VISIBLE);\r
                      fileSizeV.setVisibility(View.VISIBLE);\r
                      fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));\r
  \r
 -                    if (!file.isFolder()) {\r
 -                        AbsListView parentList = (AbsListView)parent;\r
 -                        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {\r
 -                            if (parentList.getChoiceMode() == AbsListView.CHOICE_MODE_NONE) {\r
 -                                checkBoxV.setVisibility(View.GONE);\r
 -                            } else {\r
 -                                if (parentList.isItemChecked(position)) {\r
 -                                    checkBoxV.setImageResource(\r
 -                                            R.drawable.ic_checkbox_marked);\r
 -                                } else {\r
 -                                    checkBoxV.setImageResource(\r
 -                                            R.drawable.ic_checkbox_blank_outline);\r
 -                                }\r
 -                                checkBoxV.setVisibility(View.VISIBLE);\r
 -                            }\r
 -                        }\r
 -\r
 -                    } else { //Folder\r
 +//                    if (!file.isFolder()) {\r
 +//                        AbsListView parentList = (AbsListView)parent;\r
 +//                        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {\r
 +//                            if (parentList.getChoiceMode() == AbsListView.CHOICE_MODE_NONE) {\r
 +//                                checkBoxV.setVisibility(View.GONE);\r
 +//                            } else {\r
 +//                                if (parentList.isItemChecked(position)) {\r
 +//                                    checkBoxV.setImageResource(\r
 +//                                            R.drawable.ic_checkbox_marked);\r
 +//                                } else {\r
 +//                                    checkBoxV.setImageResource(\r
 +//                                            R.drawable.ic_checkbox_blank_outline);\r
 +//                                }\r
 +//                                checkBoxV.setVisibility(View.VISIBLE);\r
 +//                            }\r
 +//                        }\r
 +\r
 +                    if (file.isFolder()) {\r
-                         fileSizeSeparatorV.setVisibility(View.INVISIBLE);\r
-                         fileSizeV.setVisibility(View.INVISIBLE);\r
+                         fileSizeSeparatorV.setVisibility(View.GONE);\r
+                         fileSizeV.setVisibility(View.GONE);\r
                      }\r
  \r
                  case GRID_ITEM:\r
  \r
                      break;\r
              }\r
 +\r
 +            ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox);\r
 +            checkBoxV.setVisibility(View.GONE);\r
 +\r
 +            AbsListView parentList = (AbsListView)parent;\r
 +            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {\r
 +                if (parentList.getChoiceMode() == AbsListView.CHOICE_MODE_NONE) {\r
 +                    checkBoxV.setVisibility(View.GONE);\r
 +                } else if (parentList.getCheckedItemCount() > 0){\r
 +                    if (parentList.isItemChecked(position)) {\r
 +                        checkBoxV.setImageResource(\r
 +                                android.R.drawable.checkbox_on_background);\r
 +                    } else {\r
 +                        checkBoxV.setImageResource(\r
 +                                android.R.drawable.checkbox_off_background);\r
 +                    }\r
 +                    checkBoxV.setVisibility(View.VISIBLE);\r
 +                }\r
 +            }\r
              \r
              // For all Views\r
              \r
              \r
              // No Folder\r
              if (!file.isFolder()) {\r
 -                if (file.isImage() && file.getRemoteId() != null){\r
 +                if ((file.isImage() || file.isVideo()) && file.getRemoteId() != null){\r
                      // Thumbnail in Cache?\r
                      Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(\r
 -                            String.valueOf(file.getRemoteId())\r
 -                            );\r
 +                            "t" + String.valueOf(file.getRemoteId()));\r
                      if (thumbnail != null && !file.needsUpdateThumbnail()){\r
 -                        fileIcon.setImageBitmap(thumbnail);\r
 +\r
 +                        if (file.isVideo()) {\r
 +                            Bitmap withOverlay = ThumbnailsCacheManager.addVideoOverlay(thumbnail);\r
 +                            fileIcon.setImageBitmap(withOverlay);\r
 +                        } else {\r
 +                            fileIcon.setImageBitmap(thumbnail);\r
 +                        }\r
                      } else {\r
                          // generate new Thumbnail\r
                          if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) {\r
                                      task\r
                                      );\r
                              fileIcon.setImageDrawable(asyncDrawable);\r
 -                            task.execute(file);\r
 +                            task.execute(file, true);\r
                          }\r
                      }\r
  \r
              }\r
          }\r
  \r
 +        if (mSelection.get(position) != null) {\r
 +            view.setBackgroundColor(Color.rgb(248, 248, 248));\r
 +        } else {\r
 +            view.setBackgroundColor(Color.WHITE);\r
 +        }\r
 +\r
          return view;\r
      }\r
  \r
       *                                  mStorageManager if is different (and not NULL)\r
       */\r
      public void swapDirectory(OCFile directory, FileDataStorageManager updatedStorageManager\r
 -            /*, boolean onlyOnDevice*/) {\r
 +            , boolean onlyOnDevice) {\r
          mFile = directory;\r
          if (updatedStorageManager != null && updatedStorageManager != mStorageManager) {\r
              mStorageManager = updatedStorageManager;\r
              mAccount = AccountUtils.getCurrentOwnCloudAccount(mContext);\r
          }\r
          if (mStorageManager != null) {\r
 -            // TODO Enable when "On Device" is recovered ?\r
 -            mFiles = mStorageManager.getFolderContent(mFile/*, onlyOnDevice*/);\r
 +            mFiles = mStorageManager.getFolderContent(mFile, onlyOnDevice);\r
              mFilesOrig.clear();\r
              mFilesOrig.addAll(mFiles);\r
              \r
              mFiles = null;\r
          }\r
  \r
 -        mFiles = FileStorageUtils.sortFolder(mFiles);\r
 +        mFiles = FileStorageUtils.sortOcFolder(mFiles);\r
          notifyDataSetChanged();\r
      }\r
      \r
          FileStorageUtils.mSortAscending = ascending;\r
          \r
  \r
 -        mFiles = FileStorageUtils.sortFolder(mFiles);\r
 +        mFiles = FileStorageUtils.sortOcFolder(mFiles);\r
          notifyDataSetChanged();\r
  \r
      }\r
      public void setGridMode(boolean gridMode) {\r
          mGridMode = gridMode;\r
      }\r
 +\r
 +    public boolean isGridMode() {\r
 +        return mGridMode;\r
 +    }\r
 +\r
 +    public void setNewSelection(int position, boolean checked) {\r
 +        mSelection.put(position, checked);\r
 +        notifyDataSetChanged();\r
 +    }\r
 +\r
 +    public void removeSelection(int position) {\r
 +        mSelection.remove(position);\r
 +        notifyDataSetChanged();\r
 +    }\r
 +\r
 +    public void removeSelection(){\r
 +         mSelection.clear();\r
 +        notifyDataSetChanged();\r
 +    }\r
 +\r
 +    public ArrayList<Integer> getCheckedItemPositions() {\r
 +        ArrayList<Integer> ids = new ArrayList<Integer>();\r
 +\r
 +        for (Map.Entry<Integer, Boolean> entry : mSelection.entrySet()){\r
 +            if (entry.getValue()){\r
 +                ids.add(entry.getKey());\r
 +            }\r
 +        }\r
 +        return ids;\r
 +    }\r
 +\r
 +    public ArrayList<OCFile> getCheckedItems() {\r
 +        ArrayList<OCFile> files = new ArrayList<OCFile>();\r
 +\r
 +        for (Map.Entry<Integer, Boolean> entry : mSelection.entrySet()){\r
 +            if (entry.getValue()){\r
 +                files.add((OCFile) getItem(entry.getKey()));\r
 +            }\r
 +        }\r
 +        return files;\r
 +    }\r
  }\r