Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2ea50e2b authored by Pawit Pornkitprasan's avatar Pawit Pornkitprasan
Browse files

Settings: fix storage measurement for device without emulated sdcard

StorageMeasurement: misc files should only be measured for internal
storage only if it is the emulated storage, otherwise misc count
for the primary storage will be erroneously duplicated on the
internal storage count.

StorageVolumePreferenceCategory:
  - Always create mMountTogglePreference to avoid null pointer
    exception for code that relies on it existing
  - Check if the keys exist before calculating totalValues to
    avoid null pointer exception on storage where media is not
    calculated
  - For available/readonly, set title, not summary (summary is
    supposed to be the amount available)

Change-Id: Ib217f79ee562dffc514696fff038e58ed0dba7d9
parent 79bf08d2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -422,7 +422,7 @@ public class StorageMeasurement {
            }

            // Measure misc files not counted under media
            if (mIsInternal || mIsPrimary) {
            if (measureMedia) {
                final File path = mIsInternal ? currentEnv.getExternalStorageDirectory()
                        : mVolume.getPathFile();
                details.miscSize = measureMisc(imcs, path);
+7 −4
Original line number Diff line number Diff line
@@ -194,8 +194,9 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory {
        }

        final boolean isRemovable = mVolume != null ? mVolume.isRemovable() : false;
        if (isRemovable) {
        // Always create the preference since many code rely on it existing
        mMountTogglePreference = new Preference(context);
        if (isRemovable) {
            mMountTogglePreference.setTitle(R.string.sd_eject);
            mMountTogglePreference.setSummary(R.string.sd_eject_summary);
            addPreference(mMountTogglePreference);
@@ -240,12 +241,12 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory {
        final String state = mStorageManager.getVolumeState(mVolume.getPath());

        if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            mItemAvailable.setSummary(R.string.memory_available_read_only);
            mItemAvailable.setTitle(R.string.memory_available_read_only);
            if (mFormatPreference != null) {
                removePreference(mFormatPreference);
            }
        } else {
            mItemAvailable.setSummary(R.string.memory_available);
            mItemAvailable.setTitle(R.string.memory_available);
        }

        if (Environment.MEDIA_MOUNTED.equals(state)
@@ -310,8 +311,10 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory {
    private static long totalValues(HashMap<String, Long> map, String... keys) {
        long total = 0;
        for (String key : keys) {
            if (map.containsKey(key)) {
                total += map.get(key);
            }
        }
        return total;
    }