1 /* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.DeviceAsWebcam.utils; 18 19 import android.annotation.Nullable; 20 import android.content.Context; 21 import android.content.SharedPreferences; 22 23 import com.android.DeviceAsWebcam.R; 24 25 /** 26 * Utility class for reading/writing user preferences from/to SharedPreferences. 27 */ 28 public class UserPrefs { 29 private final Context mContext; 30 private final SharedPreferences mPrefs; 31 private final SharedPreferences.Editor mPrefsEditor; 32 UserPrefs(Context context)33 public UserPrefs(Context context) { 34 mContext = context; 35 mPrefs = context.getSharedPreferences(context.getString(R.string.prefs_file_name), 36 Context.MODE_PRIVATE); 37 mPrefsEditor = mPrefs.edit(); 38 } 39 40 /** 41 * Read the stored zoom ratio for the given cameraId. Returns {@code defaultZoom} if no entry 42 * is found. 43 */ fetchZoomRatio(String cameraId, float defaultZoom)44 public synchronized float fetchZoomRatio(String cameraId, float defaultZoom) { 45 return mPrefs.getFloat(mContext.getString(R.string.prefs_zoom_ratio_key, cameraId), 46 defaultZoom); 47 } 48 49 /** 50 * Write the provided zoom ratio for the given cameraId to SharedPrefs. 51 */ storeZoomRatio(String cameraId, float zoom)52 public synchronized void storeZoomRatio(String cameraId, float zoom) { 53 mPrefsEditor.putFloat(mContext.getString(R.string.prefs_zoom_ratio_key, cameraId), zoom); 54 mPrefsEditor.apply(); 55 } 56 57 /** 58 * Read and return the stored cameraId, or return {@code defaultCameraId} if no cameraId is 59 * stored. 60 */ 61 @Nullable fetchCameraId(@ullable String defaultCameraId)62 public synchronized String fetchCameraId(@Nullable String defaultCameraId) { 63 return mPrefs.getString(mContext.getString(R.string.prefs_camera_id_key), defaultCameraId); 64 } 65 66 /** 67 * Write cameraId to SharedPrefs. 68 */ storeCameraId(String cameraId)69 public synchronized void storeCameraId(String cameraId) { 70 mPrefsEditor.putString(mContext.getString(R.string.prefs_camera_id_key), cameraId); 71 mPrefsEditor.apply(); 72 } 73 74 /** 75 * Read and return the stored back cameraId, or return {@code defaultCameraId} if no cameraId] 76 * is stored. 77 */ 78 @Nullable fetchBackCameraId(@ullable String defaultCameraId)79 public synchronized String fetchBackCameraId(@Nullable String defaultCameraId) { 80 return mPrefs.getString(mContext.getString(R.string.prefs_back_camera_id_key), 81 defaultCameraId); 82 } 83 84 /** 85 * Write back cameraId to SharedPrefs. 86 */ storeBackCameraId(String cameraId)87 public synchronized void storeBackCameraId(String cameraId) { 88 mPrefsEditor.putString(mContext.getString(R.string.prefs_back_camera_id_key), cameraId); 89 mPrefsEditor.apply(); 90 } 91 92 /** 93 * Read and return the stored front cameraId, or return {@code defaultCameraId} if no cameraId] 94 * is stored. 95 */ 96 @Nullable fetchFrontCameraId(@ullable String defaultCameraId)97 public synchronized String fetchFrontCameraId(@Nullable String defaultCameraId) { 98 return mPrefs.getString(mContext.getString(R.string.prefs_front_camera_id_key), 99 defaultCameraId); 100 } 101 102 /** 103 * Write front cameraId to SharedPrefs. 104 */ storeFrontCameraId(String cameraId)105 public synchronized void storeFrontCameraId(String cameraId) { 106 mPrefsEditor.putString(mContext.getString(R.string.prefs_front_camera_id_key), cameraId); 107 mPrefsEditor.apply(); 108 } 109 110 /** 111 * Read and return the stored HighQualityMode preference, or return {@code defaultValue} if 112 * not set. 113 */ fetchHighQualityModeEnabled(boolean defaultValue)114 public synchronized boolean fetchHighQualityModeEnabled(boolean defaultValue) { 115 return mPrefs.getBoolean(mContext.getString(R.string.prefs_high_quality_mode_enabled), 116 defaultValue); 117 } 118 119 /** 120 * Write preferred HighQualityMode to SharedPrefs. 121 */ storeHighQualityModeEnabled(boolean enabled)122 public synchronized void storeHighQualityModeEnabled(boolean enabled) { 123 mPrefsEditor.putBoolean(mContext.getString(R.string.prefs_high_quality_mode_enabled), 124 enabled); 125 mPrefsEditor.apply(); 126 } 127 fetchHighQualityWarningEnabled(boolean defaultValue)128 public synchronized boolean fetchHighQualityWarningEnabled(boolean defaultValue) { 129 return mPrefs.getBoolean(mContext.getString(R.string.prefs_high_quality_warning_enabled), 130 defaultValue); 131 } 132 storeHighQualityWarningEnabled(boolean value)133 public synchronized void storeHighQualityWarningEnabled(boolean value) { 134 mPrefsEditor.putBoolean(mContext.getString(R.string.prefs_high_quality_warning_enabled), 135 value); 136 mPrefsEditor.apply(); 137 } 138 } 139