Thumbnail preview
authortobiasKaminsky <tobias@kaminsky.me>
Thu, 7 Aug 2014 05:53:21 +0000 (07:53 +0200)
committertobiasKaminsky <tobias@kaminsky.me>
Thu, 7 Aug 2014 05:53:21 +0000 (07:53 +0200)
src/com/owncloud/android/ui/adapter/FileListListAdapter.java

index 5fb1871..1bab20b 100644 (file)
@@ -22,13 +22,16 @@ import java.util.Vector;
 \r
 import android.accounts.Account;\r
 import android.content.Context;\r
+import android.content.res.Resources;\r
 import android.graphics.Bitmap;\r
 import android.graphics.BitmapFactory;\r
 import android.media.ThumbnailUtils;\r
+import android.util.TypedValue;\r
 import android.view.LayoutInflater;\r
 import android.view.View;\r
 import android.view.ViewGroup;\r
 import android.widget.BaseAdapter;\r
+import android.widget.GridView;\r
 import android.widget.ImageView;\r
 import android.widget.ListAdapter;\r
 import android.widget.ListView;\r
@@ -42,6 +45,7 @@ import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
 import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;\r
 import com.owncloud.android.ui.activity.ComponentsGetter;\r
 import com.owncloud.android.utils.DisplayUtils;\r
+import com.owncloud.android.utils.Log_OC;\r
 \r
 \r
 /**\r
@@ -104,16 +108,44 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
 \r
     @Override\r
     public View getView(int position, View convertView, ViewGroup parent) {\r
+     // decide image vs. file view\r
+        double count = 0;\r
+        \r
+        \r
+        for (OCFile file : mFiles){\r
+            if (file.isImage()){\r
+                count++;\r
+            }\r
+        }\r
+        \r
+        // > 50% Images --> image view\r
+        boolean fileView = true;\r
+        if ((count / mFiles.size()) >= 0.5){\r
+            Log_OC.i("FileListListAdapter", "Image View");\r
+            fileView = false;\r
+        } else {\r
+            Log_OC.i("FileListListAdapter", "File View");\r
+            fileView = true;\r
+        }\r
+        \r
         View view = convertView;\r
-        if (view == null) {\r
+//        if (view == null) {\r
             LayoutInflater inflator = (LayoutInflater) mContext\r
                     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);\r
-            view = inflator.inflate(R.layout.list_item, null);\r
-        }\r
+            if (fileView){\r
+                view = inflator.inflate(R.layout.list_item, null);\r
+            } else {\r
+                view = inflator.inflate(R.layout.image_item, null);\r
+                View frame = view.findViewById(R.id.imageItemFrame);\r
+                frame.setVisibility(View.GONE);\r
+            }\r
+//        }\r
+            view.invalidate();\r
     \r
         if (mFiles != null && mFiles.size() > position) {\r
             OCFile file = mFiles.get(position);\r
             TextView fileName = (TextView) view.findViewById(R.id.Filename);\r
+            if (!fileView){fileName.setVisibility(View.GONE);}\r
             String name = file.getFileName();\r
 \r
             fileName.setText(name);\r
@@ -156,8 +188,8 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
                     view.findViewById(R.id.imageView3).setVisibility(View.VISIBLE);\r
                 }\r
                 \r
-                ListView parentList = (ListView)parent;\r
-                if (parentList.getChoiceMode() == ListView.CHOICE_MODE_NONE) { \r
+                GridView parentList = (GridView)parent;\r
+                if (parentList.getChoiceMode() == GridView.CHOICE_MODE_NONE) { \r
                     checkBoxV.setVisibility(View.GONE);\r
                 } else {\r
                     if (parentList.isItemChecked(position)) {\r
@@ -170,8 +202,11 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
 \r
                 // generate Thumbnail if file is available local and image\r
                 if (file.isDown() && file.isImage()){\r
+                    // Converts dp to pixel\r
+                    Resources r = mContext.getResources();\r
+                    int px = (int) Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 150, r.getDisplayMetrics()));\r
                     Bitmap bitmap = BitmapFactory.decodeFile(file.getStoragePath());\r
-                    fileIcon.setImageBitmap(ThumbnailUtils.extractThumbnail(bitmap, 50, 50));\r
+                    fileIcon.setImageBitmap(ThumbnailUtils.extractThumbnail(bitmap, px, px));\r
                 } else {\r
                     fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()));  \r
                 }\r
@@ -181,9 +216,8 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
                 }\r
             } \r
             else {\r
-                \r
                 fileSizeV.setVisibility(View.INVISIBLE);\r
-                //fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));\r
+                fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength()));\r
                 lastModV.setVisibility(View.VISIBLE);\r
                 lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()));\r
                 checkBoxV.setVisibility(View.GONE);\r