/** * ownCloud Android client application * * @author David A. Velasco * Copyright (C) 2016 ownCloud Inc. *

* This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, * as published by the Free Software Foundation. *

* This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. *

* You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package com.owncloud.android.db; import android.content.Context; import android.content.SharedPreferences; import com.owncloud.android.utils.FileStorageUtils; /** * Helper to simplify reading of Preferences all around the app */ public abstract class PreferenceManager { /** * Constant to access value of last path selected by the user to upload a file shared from other app. * Value handled by the app without direct access in the UI. */ private static final String AUTO_PREF__LAST_UPLOAD_PATH = "last_upload_path"; private static final String AUTO_PREF__SORT_ORDER = "sort_order"; private static final String AUTO_PREF__SORT_ASCENDING = "sort_ascending"; private static final String AUTO_PREF__UPLOAD_FILE_EXTENSION_MAP_URL = "prefs_upload_file_extension_map_url"; private static final String AUTO_PREF__UPLOAD_FILE_EXTENSION_URL = "prefs_upload_file_extension_url"; private static final String AUTO_PREF__UPLOADER_BEHAVIOR = "prefs_uploader_behaviour"; private static final String PREF__INSTANT_UPLOADING = "instant_uploading"; private static final String PREF__INSTANT_VIDEO_UPLOADING = "instant_video_uploading"; private static final String PREF__INSTANT_UPLOAD_PATH_USE_SUBFOLDERS = "instant_upload_path_use_subfolders"; private static final String PREF__INSTANT_UPLOAD_ON_WIFI = "instant_upload_on_wifi"; private static final String PREF__INSTANT_VIDEO_UPLOAD_ON_WIFI = "instant_video_upload_on_wifi"; private static final String PREF__INSTANT_VIDEO_UPLOAD_PATH_USE_SUBFOLDERS = "instant_video_upload_path_use_subfolders"; private static final String PREF__LEGACY_CLEAN = "legacyClean"; public static boolean instantPictureUploadEnabled(Context context) { return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_UPLOADING, false); } public static boolean instantVideoUploadEnabled(Context context) { return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_VIDEO_UPLOADING, false); } public static boolean instantPictureUploadPathUseSubfolders(Context context) { return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_UPLOAD_PATH_USE_SUBFOLDERS, false); } public static boolean instantPictureUploadViaWiFiOnly(Context context) { return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_UPLOAD_ON_WIFI, false); } public static boolean instantVideoUploadPathUseSubfolders(Context context) { return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_VIDEO_UPLOAD_PATH_USE_SUBFOLDERS, false); } public static boolean instantVideoUploadViaWiFiOnly(Context context) { return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_VIDEO_UPLOAD_ON_WIFI, false); } public static boolean instantPictureUploadWhenChargingOnly(Context context) { return PreferenceManager.getDefaultSharedPreferences(context).getBoolean("instant_upload_on_charging", false); } public static boolean instantVideoUploadWhenChargingOnly(Context context) { return PreferenceManager.getDefaultSharedPreferences(context).getBoolean("instant_video_upload_on_charging", false); } public static boolean showHiddenFilesEnabled(Context context) { return PreferenceManager.getDefaultSharedPreferences(context).getBoolean("show_hidden_files_pref", false); } /** * Gets the selected file extension position the user selected to do the last upload of a url file shared from other * app. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @return selectedPos the selected file extension position. */ public static int getUploadUrlFileExtensionUrlSelectedPos(Context context) { return getDefaultSharedPreferences(context).getInt(AUTO_PREF__UPLOAD_FILE_EXTENSION_URL, 0); } /** * Saves the selected file extension position the user selected to do the last upload of a url file shared from * other app. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @param selectedPos the selected file extension position. */ public static void setUploadUrlFileExtensionUrlSelectedPos(Context context, int selectedPos) { saveIntPreference(context, AUTO_PREF__UPLOAD_FILE_EXTENSION_URL, selectedPos); } /** * Gets the selected map file extension position the user selected to do the last upload of a url file shared * from other app. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @return selectedPos the selected file extension position. */ public static int getUploadMapFileExtensionUrlSelectedPos(Context context) { return getDefaultSharedPreferences(context).getInt(AUTO_PREF__UPLOAD_FILE_EXTENSION_MAP_URL, 0); } /** * Saves the selected map file extension position the user selected to do the last upload of a url file shared from * other app. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @param selectedPos the selected file extension position. */ public static void setUploadMapFileExtensionUrlSelectedPos(Context context, int selectedPos) { saveIntPreference(context, AUTO_PREF__UPLOAD_FILE_EXTENSION_MAP_URL, selectedPos); } /** * Gets the path where the user selected to do the last upload of a file shared from other app. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @return path Absolute path to a folder, as previously stored by {@link #setLastUploadPath(Context, String)}, * or empty String if never saved before. */ public static String getLastUploadPath(Context context) { return getDefaultSharedPreferences(context).getString(AUTO_PREF__LAST_UPLOAD_PATH, ""); } /** * Saves the path where the user selected to do the last upload of a file shared from other app. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @param path Absolute path to a folder. */ public static void setLastUploadPath(Context context, String path) { saveStringPreference(context, AUTO_PREF__LAST_UPLOAD_PATH, path); } /** * Gets the sort order which the user has set last. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @return sort order the sort order, default is {@link FileStorageUtils#SORT_NAME} (sort by name) */ public static int getSortOrder(Context context) { return getDefaultSharedPreferences(context).getInt(AUTO_PREF__SORT_ORDER, FileStorageUtils.SORT_NAME); } /** * Save the sort order which the user has set last. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @param order the sort order */ public static void setSortOrder(Context context, int order) { saveIntPreference(context, AUTO_PREF__SORT_ORDER, order); } /** * Gets the ascending order flag which the user has set last. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @return ascending order the ascending order, default is true */ public static boolean getSortAscending(Context context) { return getDefaultSharedPreferences(context).getBoolean(AUTO_PREF__SORT_ASCENDING, true); } /** * Saves the ascending order flag which the user has set last. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @param ascending flag if sorting is ascending or descending */ public static void setSortAscending(Context context, boolean ascending) { saveBooleanPreference(context, AUTO_PREF__SORT_ASCENDING, ascending); } /** * Gets the legacy cleaning flag last set. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @return ascending order the alegacy cleaning flag, default is false */ public static boolean getLegacyClean(Context context) { return getDefaultSharedPreferences(context).getBoolean(PREF__LEGACY_CLEAN, false); } /** * Saves the legacy cleaning flag which the user has set last. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @param legacyClean flag if it is a legacy cleaning */ public static void setLegacyClean(Context context, boolean legacyClean) { saveBooleanPreference(context, PREF__LEGACY_CLEAN, legacyClean); } /** * Gets the uploader behavior which the user has set last. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @return uploader behavior the uploader behavior */ public static int getUploaderBehaviour(Context context) { return getDefaultSharedPreferences(context).getInt(AUTO_PREF__UPLOADER_BEHAVIOR, 1); } /** * Saves the uploader behavior which the user has set last. * * @param context Caller {@link Context}, used to access to shared preferences manager. * @param uploaderBehaviour the uploader behavior */ public static void setUploaderBehaviour(Context context, int uploaderBehaviour) { saveIntPreference(context, AUTO_PREF__UPLOADER_BEHAVIOR, uploaderBehaviour); } public static void saveBooleanPreference(Context context, String key, boolean value) { SharedPreferences.Editor appPreferences = getDefaultSharedPreferences(context.getApplicationContext()).edit(); appPreferences.putBoolean(key, value); appPreferences.apply(); } private static void saveStringPreference(Context context, String key, String value) { SharedPreferences.Editor appPreferences = getDefaultSharedPreferences(context.getApplicationContext()).edit(); appPreferences.putString(key, value); appPreferences.apply(); } private static void saveIntPreference(Context context, String key, int value) { SharedPreferences.Editor appPreferences = getDefaultSharedPreferences(context.getApplicationContext()).edit(); appPreferences.putInt(key, value); appPreferences.apply(); } public static SharedPreferences getDefaultSharedPreferences(Context context) { return android.preference.PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()); } }