import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
private static final String TAG = "MemorySettings";
private static final int DLG_CONFIRM_UNMOUNT = 1;
private static final String TAG = "MemorySettings";
private static final int DLG_CONFIRM_UNMOUNT = 1;
- // The mountToggle Preference that has been clicked.
- // The click event will be discarded if this value is not null. Reset to null after (un)mount.
- private Preference mClickedMountToggle;
+ // The mountToggle Preference that has last been clicked.
+ // Assumes no two successive unmount event on 2 different volumes are performed before the first
+ // one's preference is disabled
+ private Preference mLastClickedMountToggle;
- boolean mountToggleClicked = svpc.mountToggleClicked(preference);
- if (mountToggleClicked && mClickedMountToggle == null) {
- mClickedMountToggle = preference;
+ if (svpc.mountToggleClicked(preference)) {
+ mLastClickedMountToggle = preference;
final StorageVolume storageVolume = svpc.getStorageVolume();
mClickedMountPoint = storageVolume.getPath();
String state = mStorageManager.getVolumeState(storageVolume.getPath());
final StorageVolume storageVolume = svpc.getStorageVolume();
mClickedMountPoint = storageVolume.getPath();
String state = mStorageManager.getVolumeState(storageVolume.getPath());
private void doUnmount() {
// Present a toast here
Toast.makeText(getActivity(), R.string.unmount_inform_text, Toast.LENGTH_SHORT).show();
IMountService mountService = getMountService();
try {
private void doUnmount() {
// Present a toast here
Toast.makeText(getActivity(), R.string.unmount_inform_text, Toast.LENGTH_SHORT).show();
IMountService mountService = getMountService();
try {
- mClickedMountToggle.setEnabled(false);
- mClickedMountToggle.setTitle(mResources.getString(R.string.sd_ejecting_title));
- mClickedMountToggle.setSummary(mResources.getString(R.string.sd_ejecting_summary));
+ mLastClickedMountToggle.setEnabled(false);
+ mLastClickedMountToggle.setTitle(mResources.getString(R.string.sd_ejecting_title));
+ mLastClickedMountToggle.setSummary(mResources.getString(R.string.sd_ejecting_summary));
mountService.unmountVolume(mClickedMountPoint, true);
} catch (RemoteException e) {
// Informative dialog to user that unmount failed.
showDialogInner(DLG_ERROR_UNMOUNT);
}
mountService.unmountVolume(mClickedMountPoint, true);
} catch (RemoteException e) {
// Informative dialog to user that unmount failed.
showDialogInner(DLG_ERROR_UNMOUNT);
}
// Very unlikely. But present an error dialog anyway
Log.e(TAG, "Is MountService running?");
showDialogInner(DLG_ERROR_UNMOUNT);
// Very unlikely. But present an error dialog anyway
Log.e(TAG, "Is MountService running?");
showDialogInner(DLG_ERROR_UNMOUNT);