浏览代码

Automatic grid view is only enabled if server supports remote thumbnails and ALL the files in a folder are images

David A. Velasco 9 年之前
父节点
当前提交
1a3a150248

+ 1 - 1
owncloud-android-library

@@ -1 +1 @@
-Subproject commit 8f87ad78f752fd44c419d1595482247cae5d056b
+Subproject commit c84530d359e40f2a13827c796091bb26780683a7

+ 17 - 0
src/com/owncloud/android/authentication/AccountUtils.java

@@ -23,6 +23,7 @@ package com.owncloud.android.authentication;
 import java.util.Locale;
 
 import com.owncloud.android.MainApp;
+import com.owncloud.android.lib.common.OwnCloudAccount;
 import com.owncloud.android.lib.common.accounts.AccountTypeUtils;
 import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
 import com.owncloud.android.lib.common.utils.Log_OC;
@@ -267,4 +268,20 @@ public class AccountUtils {
         return url;
     }
 
+    /**
+     * Access the version of the OC server corresponding to an account SAVED IN THE ACCOUNTMANAGER
+     *
+     * @param   account     ownCloud account
+     * @return              Version of the OC server corresponding to account, according to the data saved
+     *                      in the system AccountManager
+     */
+    public static OwnCloudVersion getServerVersion(Account account) {
+        if (account != null) {
+            AccountManager accountMgr = AccountManager.get(MainApp.getAppContext());
+            String serverVersionStr = accountMgr.getUserData(account, Constants.KEY_OC_VERSION);
+            return new OwnCloudVersion(serverVersionStr);
+        }
+        return null;
+    }
+
 }

+ 7 - 4
src/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -36,10 +36,13 @@ import android.widget.AdapterView;
 import android.widget.AdapterView.AdapterContextMenuInfo;
 
 import com.owncloud.android.R;
+import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.FileMenuFilter;
 import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.lib.resources.status.OwnCloudVersion;
+import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.activity.FolderPickerActivity;
 import com.owncloud.android.ui.activity.OnEnforceableRefreshListener;
@@ -54,7 +57,7 @@ import com.owncloud.android.utils.FileStorageUtils;
 /**
  * A Fragment that lists all files and folders in a given path.
  * 
- * TODO refactorize to get rid of direct dependency on FileDisplayActivity
+ * TODO refactor to get rid of direct dependency on FileDisplayActivity
  */
 public class OCFileListFragment extends ExtendedListFragment {
     
@@ -68,8 +71,6 @@ public class OCFileListFragment extends ExtendedListFragment {
             
     private static final String KEY_FILE = MY_PACKAGE + ".extra.FILE";
 
-    private final static Double THUMBNAIL_THRESHOLD = 0.5;
-
     private FileFragment.ContainerActivity mContainerActivity;
    
     private OCFile mFile = null;
@@ -429,7 +430,9 @@ public class OCFileListFragment extends ExtendedListFragment {
             setFooterText(generateFooterText(filesCount, foldersCount));
 
             // decide grid vs list view
-            if (((double)imagesCount / (double)filesCount) >= THUMBNAIL_THRESHOLD) {
+            OwnCloudVersion version = AccountUtils.getServerVersion(((FileActivity)mContainerActivity).getAccount());
+            if (version != null && version.supportsRemoteThumbnails() &&
+                    imagesCount == filesCount) {
                 switchToGridView();
             } else {
                 switchToListView();