From 1a3a1502485968a77640c08ae6f6b1bc06de1164 Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Fri, 19 Jun 2015 14:06:35 +0200 Subject: [PATCH] Automatic grid view is only enabled if server supports remote thumbnails and ALL the files in a folder are images --- owncloud-android-library | 2 +- .../owncloud/android/authentication/AccountUtils.java | 17 +++++++++++++++++ .../android/ui/fragment/OCFileListFragment.java | 11 +++++++---- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/owncloud-android-library b/owncloud-android-library index 8f87ad78..c84530d3 160000 --- a/owncloud-android-library +++ b/owncloud-android-library @@ -1 +1 @@ -Subproject commit 8f87ad78f752fd44c419d1595482247cae5d056b +Subproject commit c84530d359e40f2a13827c796091bb26780683a7 diff --git a/src/com/owncloud/android/authentication/AccountUtils.java b/src/com/owncloud/android/authentication/AccountUtils.java index 9afa819c..b535fc90 100644 --- a/src/com/owncloud/android/authentication/AccountUtils.java +++ b/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; + } + } diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index dd8ed029..e56c6e8b 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/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(); -- 2.11.0