summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/settings/CameraSettingsActivity.java
diff options
context:
space:
mode:
authordcalandria <dcalandria@gmail.com>2015-04-25 18:09:25 +0200
committerMichael Bestas <mikeioannina@gmail.com>2016-12-30 17:22:17 +0200
commit521f4565e0108d92abd48ed90ef923199651de73 (patch)
tree3ebd45be793f5bbe7b64da450ac0f844861fe8bf /src/com/android/camera/settings/CameraSettingsActivity.java
parentf1154fa97084d8601fe4f1ca61cc350b6a29693d (diff)
downloadandroid_packages_apps_Camera2-521f4565e0108d92abd48ed90ef923199651de73.tar.gz
android_packages_apps_Camera2-521f4565e0108d92abd48ed90ef923199651de73.tar.bz2
android_packages_apps_Camera2-521f4565e0108d92abd48ed90ef923199651de73.zip
Add Storage preference (1/2)
This patch allows the user to change the default storage path. As in CM11, when the path is changed it sends an intent to the Gallery to set the default camera folder. Change-Id: I319decc3fdceca61050cf64f7e59afb06fedbf80 Fix writing to external storage. Change-Id: Ie0917b6c17129cd9ad2c69a2a53a4c3c3ee565b6 CameraSettingsActivity: Handle NPE when storage preference is already removed Fixes: http://pastebin.com/zv1sPid2 Change-Id: I05951f93b37759f4d8c9f2fde10c84eb388c4830
Diffstat (limited to 'src/com/android/camera/settings/CameraSettingsActivity.java')
-rw-r--r--src/com/android/camera/settings/CameraSettingsActivity.java49
1 files changed, 49 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