|
@@ -26,7 +26,8 @@ import android.annotation.SuppressLint;
|
|
|
import android.content.Context;
|
|
|
import android.content.SharedPreferences;
|
|
|
|
|
|
-import com.owncloud.android.authentication.AccountUtils;
|
|
|
+import com.nextcloud.client.account.CurrentAccountProvider;
|
|
|
+import com.nextcloud.client.account.UserAccountManagerImpl;
|
|
|
import com.owncloud.android.datamodel.ArbitraryDataProvider;
|
|
|
import com.owncloud.android.datamodel.FileDataStorageManager;
|
|
|
import com.owncloud.android.datamodel.OCFile;
|
|
@@ -74,15 +75,18 @@ public final class AppPreferencesImpl implements AppPreferences {
|
|
|
|
|
|
private final Context context;
|
|
|
private final SharedPreferences preferences;
|
|
|
+ private final CurrentAccountProvider currentAccountProvider;
|
|
|
|
|
|
public static AppPreferences fromContext(Context context) {
|
|
|
- SharedPreferences prefs = android.preference.PreferenceManager.getDefaultSharedPreferences(context);
|
|
|
- return new AppPreferencesImpl(context, prefs);
|
|
|
+ final CurrentAccountProvider currentAccountProvider = UserAccountManagerImpl.fromContext(context);
|
|
|
+ final SharedPreferences prefs = android.preference.PreferenceManager.getDefaultSharedPreferences(context);
|
|
|
+ return new AppPreferencesImpl(context, prefs, currentAccountProvider);
|
|
|
}
|
|
|
|
|
|
- AppPreferencesImpl(Context appContext, SharedPreferences preferences) {
|
|
|
+ AppPreferencesImpl(Context appContext, SharedPreferences preferences, CurrentAccountProvider currentAccountProvider) {
|
|
|
this.context = appContext;
|
|
|
this.preferences = preferences;
|
|
|
+ this.currentAccountProvider = currentAccountProvider;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -203,23 +207,38 @@ public final class AppPreferencesImpl implements AppPreferences {
|
|
|
|
|
|
@Override
|
|
|
public String getFolderLayout(OCFile folder) {
|
|
|
- return getFolderPreference(context, PREF__FOLDER_LAYOUT, folder, FOLDER_LAYOUT_LIST);
|
|
|
+ return getFolderPreference(context,
|
|
|
+ currentAccountProvider.getCurrentAccount(),
|
|
|
+ PREF__FOLDER_LAYOUT,
|
|
|
+ folder,
|
|
|
+ FOLDER_LAYOUT_LIST);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void setFolderLayout(OCFile folder, String layout_name) {
|
|
|
- setFolderPreference(context, PREF__FOLDER_LAYOUT, folder, layout_name);
|
|
|
+ setFolderPreference(context,
|
|
|
+ currentAccountProvider.getCurrentAccount(),
|
|
|
+ PREF__FOLDER_LAYOUT,
|
|
|
+ folder,
|
|
|
+ layout_name);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public FileSortOrder getSortOrderByFolder(OCFile folder) {
|
|
|
- return FileSortOrder.sortOrders.get(getFolderPreference(context, PREF__FOLDER_SORT_ORDER, folder,
|
|
|
- FileSortOrder.sort_a_to_z.name));
|
|
|
+ return FileSortOrder.sortOrders.get(getFolderPreference(context,
|
|
|
+ currentAccountProvider.getCurrentAccount(),
|
|
|
+ PREF__FOLDER_SORT_ORDER,
|
|
|
+ folder,
|
|
|
+ FileSortOrder.sort_a_to_z.name));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void setSortOrder(OCFile folder, FileSortOrder sortOrder) {
|
|
|
- setFolderPreference(context, PREF__FOLDER_SORT_ORDER, folder, sortOrder.name);
|
|
|
+ setFolderPreference(context,
|
|
|
+ currentAccountProvider.getCurrentAccount(),
|
|
|
+ PREF__FOLDER_SORT_ORDER,
|
|
|
+ folder,
|
|
|
+ sortOrder.name);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -229,8 +248,7 @@ public final class AppPreferencesImpl implements AppPreferences {
|
|
|
|
|
|
@Override
|
|
|
public FileSortOrder getSortOrderByType(FileSortOrder.Type type, FileSortOrder defaultOrder) {
|
|
|
- Account account = AccountUtils.getCurrentOwnCloudAccount(context);
|
|
|
-
|
|
|
+ Account account = currentAccountProvider.getCurrentAccount();
|
|
|
if (account == null) {
|
|
|
return defaultOrder;
|
|
|
}
|
|
@@ -244,7 +262,7 @@ public final class AppPreferencesImpl implements AppPreferences {
|
|
|
|
|
|
@Override
|
|
|
public void setSortOrder(FileSortOrder.Type type, FileSortOrder sortOrder) {
|
|
|
- Account account = AccountUtils.getCurrentOwnCloudAccount(context);
|
|
|
+ Account account = currentAccountProvider.getCurrentAccount();
|
|
|
|
|
|
if (account == null) {
|
|
|
throw new IllegalArgumentException("Account may not be null!");
|
|
@@ -457,10 +475,11 @@ public final class AppPreferencesImpl implements AppPreferences {
|
|
|
* @param defaultValue Fallback value in case no ancestor is set.
|
|
|
* @return Preference value
|
|
|
*/
|
|
|
- private static String getFolderPreference(Context context, String preferenceName, OCFile folder,
|
|
|
- String defaultValue) {
|
|
|
- Account account = AccountUtils.getCurrentOwnCloudAccount(context);
|
|
|
-
|
|
|
+ private static String getFolderPreference(final Context context,
|
|
|
+ final Account account,
|
|
|
+ final String preferenceName,
|
|
|
+ final OCFile folder,
|
|
|
+ final String defaultValue) {
|
|
|
if (account == null) {
|
|
|
return defaultValue;
|
|
|
}
|
|
@@ -469,9 +488,10 @@ public final class AppPreferencesImpl implements AppPreferences {
|
|
|
FileDataStorageManager storageManager = new FileDataStorageManager(account, context.getContentResolver());
|
|
|
|
|
|
String value = dataProvider.getValue(account.name, getKeyFromFolder(preferenceName, folder));
|
|
|
- while (folder != null && value.isEmpty()) {
|
|
|
- folder = storageManager.getFileById(folder.getParentId());
|
|
|
- value = dataProvider.getValue(account.name, getKeyFromFolder(preferenceName, folder));
|
|
|
+ OCFile prefFolder = folder;
|
|
|
+ while (prefFolder != null && value.isEmpty()) {
|
|
|
+ prefFolder = storageManager.getFileById(prefFolder.getParentId());
|
|
|
+ value = dataProvider.getValue(account.name, getKeyFromFolder(preferenceName, prefFolder));
|
|
|
}
|
|
|
return value.isEmpty() ? defaultValue : value;
|
|
|
}
|
|
@@ -484,9 +504,11 @@ public final class AppPreferencesImpl implements AppPreferences {
|
|
|
* @param folder Folder.
|
|
|
* @param value Preference value to set.
|
|
|
*/
|
|
|
- private static void setFolderPreference(Context context, String preferenceName, OCFile folder, String value) {
|
|
|
- Account account = AccountUtils.getCurrentOwnCloudAccount(context);
|
|
|
-
|
|
|
+ private static void setFolderPreference(final Context context,
|
|
|
+ final Account account,
|
|
|
+ final String preferenceName,
|
|
|
+ final OCFile folder,
|
|
|
+ final String value) {
|
|
|
if (account == null) {
|
|
|
throw new IllegalArgumentException("Account may not be null!");
|
|
|
}
|