diff options
Diffstat (limited to 'src/com/android/camera/settings')
-rw-r--r-- | src/com/android/camera/settings/CameraSettingsActivity.java | 49 | ||||
-rw-r--r-- | src/com/android/camera/settings/Keys.java | 9 | ||||
-rw-r--r-- | src/com/android/camera/settings/SettingsUtil.java | 11 |
3 files changed, 69 insertions, 0 deletions
diff --git a/src/com/android/camera/settings/CameraSettingsActivity.java b/src/com/android/camera/settings/CameraSettingsActivity.java index f890bf11f..4e05add96 100644 --- a/src/com/android/camera/settings/CameraSettingsActivity.java +++ b/src/com/android/camera/settings/CameraSettingsActivity.java @@ -23,6 +23,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; +import android.os.storage.StorageVolume; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; @@ -150,6 +151,8 @@ public class CameraSettingsActivity extends FragmentActivity { // Selected resolutions for the different cameras and sizes. private PictureSizes mPictureSizes; + private List<StorageVolume> mStorageVolumes; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -189,6 +192,9 @@ public class CameraSettingsActivity extends FragmentActivity { // Load the camera sizes. loadSizes(); + // Load storage volumes + loadStorageVolumeList(); + // Send loaded sizes to additional preferences. CameraSettingsActivityHelper.onSizesLoaded(this, mPictureSizes.backCameraSizes, new ListPreferenceFiller() { @@ -215,6 +221,17 @@ public class CameraSettingsActivity extends FragmentActivity { setPreferenceScreenIntent(advancedScreen); } + // Fill Storage preference + final Preference storagePreference = findPreference(Keys.KEY_STORAGE); + if (storagePreference != null) { + if (mStorageVolumes == null) { + getPreferenceScreen().removePreference(storagePreference); + } else { + setEntries(storagePreference); + setSummary(storagePreference); + } + } + getPreferenceScreen().getSharedPreferences() .registerOnSharedPreferenceChangeListener(this); } @@ -365,6 +382,8 @@ public class CameraSettingsActivity extends FragmentActivity { setEntriesForSelection(mPictureSizes.videoQualitiesBack.orNull(), listPreference); } else if (listPreference.getKey().equals(Keys.KEY_VIDEO_QUALITY_FRONT)) { setEntriesForSelection(mPictureSizes.videoQualitiesFront.orNull(), listPreference); + } else if (listPreference.getKey().equals(Keys.KEY_STORAGE)) { + setStorageEntriesForSelection(mStorageVolumes, listPreference); } } @@ -444,6 +463,28 @@ public class CameraSettingsActivity extends FragmentActivity { } /** + * Sets the entries for the storage list preference. + * + * @param storageVolumes The storage volumes. + * @param preference The preference to set the entries for. + */ + private void setStorageEntriesForSelection(List<StorageVolume> storageVolumes, + ListPreference preference) { + if (storageVolumes == null) { + return; + } + String[] entries = new String[storageVolumes.size()]; + String[] entryValues = new String[storageVolumes.size()]; + for (int i = 0; i < storageVolumes.size(); i++) { + StorageVolume v = storageVolumes.get(i); + entries[i] = v.getDescription(getActivity()); + entryValues[i] = v.getPath(); + } + preference.setEntries(entries); + preference.setEntryValues(entryValues); + } + + /** * Sets the summary for the given list preference. * * @param displayableSizes The human readable preferred sizes @@ -491,6 +532,14 @@ public class CameraSettingsActivity extends FragmentActivity { mPictureSizes = loader.computePictureSizes(); } + private void loadStorageVolumeList() { + mStorageVolumes = SettingsUtil.getMountedStorageVolumes(); + if (mStorageVolumes.size() < 2) { + // Remove storage preference + mStorageVolumes = null; + } + } + /** * @param size The photo resolution. * @return A human readable and translated string for labeling the diff --git a/src/com/android/camera/settings/Keys.java b/src/com/android/camera/settings/Keys.java index f59591f84..8cc643b2f 100644 --- a/src/com/android/camera/settings/Keys.java +++ b/src/com/android/camera/settings/Keys.java @@ -18,6 +18,8 @@ package com.android.camera.settings; import android.content.Context; +import android.os.Environment; + import com.android.camera.app.LocationManager; import com.android.camera.util.ApiHelper; import com.android.camera2.R; @@ -83,6 +85,7 @@ public class Keys { public static final String KEY_HAS_SEEN_PERMISSIONS_DIALOGS = "pref_has_seen_permissions_dialogs"; public static final String KEY_POWER_SHUTTER = "pref_power_shutter"; public static final String KEY_MAX_BRIGHTNESS = "pref_max_brightness"; + public static final String KEY_STORAGE = "pref_camera_storage_key"; /** * Set some number of defaults for the defined keys. @@ -182,6 +185,12 @@ public class Keys { settingsManager.setDefaults(KEY_SHOULD_SHOW_SETTINGS_BUTTON_CLING, true); + settingsManager.setDefaults(KEY_STORAGE, + Environment.getExternalStorageDirectory().toString(), null); + if (!settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, KEY_STORAGE)) { + settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL, KEY_STORAGE); + } + } /** Helper functions for some defined keys. */ diff --git a/src/com/android/camera/settings/SettingsUtil.java b/src/com/android/camera/settings/SettingsUtil.java index f83fb8bcd..64fd8435d 100644 --- a/src/com/android/camera/settings/SettingsUtil.java +++ b/src/com/android/camera/settings/SettingsUtil.java @@ -21,6 +21,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.res.Resources; import android.media.CamcorderProfile; +import android.os.storage.StorageVolume; import android.util.SparseArray; import com.android.camera.debug.Log; @@ -491,6 +492,16 @@ public class SettingsUtil { return -1; } + private static List<StorageVolume> sMountedStorageVolumes; + + public static void setMountedStorageVolumes(List<StorageVolume> volumes) { + sMountedStorageVolumes = volumes; + } + + public static List<StorageVolume> getMountedStorageVolumes() { + return sMountedStorageVolumes; + } + public static interface CameraDeviceSelector { /** * Given the static characteristics of a specific camera device, decide whether it is the |