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

Commit 82bdfc01 authored by Daniel Hillenbrand's avatar Daniel Hillenbrand Committed by Gerrit Code Review
Browse files

Merge "Add option for switching between UMS and MTP/PTP mode. (2/2)" into ics

parents a85e8713 4c5cad09
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -2382,9 +2382,13 @@
    <string name="usb_mtp_summary">Lets you transfer media files on Windows, or using Android File Transfer on Mac (see www.android.com/filetransfer)</string>
    <!-- Storage setting. Title for PTP checkbox [CHAR LIMIT=30]-->
    <string name="usb_ptp_title">Camera (PTP)</string>
    <!-- Storage setting. Label for installer CD [CHAR LIMIT=30]-->
    <string name="usb_ptp_summary">Lets you transfer photos using camera software, and transfer any files on computers that don\'t support MTP</string>
    <!-- Storage setting. Summary for PTP checkbox [CHAR LIMIT=NONE]-->
    <string name="usb_ptp_summary">Lets you transfer photos using camera software, and transfer any files on computers that don\'t support MTP</string>
    <!-- Storage setting. Title for Mass Storage checkbox [CHAR LIMIT=30]-->
    <string name="usb_mass_storage_title">Mass Storage</string>
    <!-- Storage setting. Summary for UMS checkbox [CHAR LIMIT=NONE]-->
    <string name="usb_mass_storage_summary">Enable USB mass storage</string>
    <!-- Storage setting. Label for installer CD [CHAR LIMIT=30]-->
    <string name="usb_label_installer_cd">"Install file-transfer tools"</string>

    <!-- Storage setting. Menu option for generic storage settings [CHAR LIMIT=30]-->
+6 −0
Original line number Diff line number Diff line
@@ -32,4 +32,10 @@
        android:summary="@string/usb_ptp_summary"
        />

    <CheckBoxPreference
        android:key="usb_mass_storage"
        android:title="@string/usb_mass_storage_title"
        android:summary="@string/usb_mass_storage_summary"
        />

</PreferenceScreen>
+9 −5
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.os.storage.StorageVolume;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.provider.Settings;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
@@ -99,6 +100,11 @@ public class Memory extends SettingsPreferenceFragment {

        StorageVolume[] storageVolumes = mStorageManager.getVolumeList();
        // mass storage is enabled if primary volume supports it
        if (Settings.Secure.getInt(getContentResolver(), Settings.Secure.USB_MASS_STORAGE_ENABLED, 0) > 0 ) {
            mMassStorageEnabled = (storageVolumes.length > 0
                                   && storageVolumes[0].allowMassStorage());
        }

        mMassStorageEnabled = (storageVolumes.length > 0
                && storageVolumes[0].allowMassStorage());
        int length = storageVolumes.length;
@@ -170,11 +176,9 @@ public class Memory extends SettingsPreferenceFragment {

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        if (!mMassStorageEnabled) {
        menu.add(Menu.NONE, MENU_ID_USB, 0, R.string.storage_menu_usb)
            //.setIcon(com.android.internal.R.drawable.stat_sys_data_usb)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        }
        if (mHasSwitchableStorage) {
            menu.add(Menu.NONE, MENU_ID_STORAGE, 0, R.string.storage_menu_storage)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+27 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.os.storage.StorageManager;
import android.os.storage.StorageVolume;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceScreen;
@@ -45,10 +47,14 @@ public class UsbSettings extends SettingsPreferenceFragment {

    private static final String KEY_MTP = "usb_mtp";
    private static final String KEY_PTP = "usb_ptp";
    private static final String KEY_MASS_STORAGE = "usb_mass_storage";

    private UsbManager mUsbManager;
    private StorageManager storageManager;
    private StorageVolume[] storageVolumes;
    private CheckBoxPreference mMtp;
    private CheckBoxPreference mPtp;
    private CheckBoxPreference mUms;

    private final BroadcastReceiver mStateReceiver = new BroadcastReceiver() {
        public void onReceive(Context content, Intent intent) {
@@ -64,8 +70,13 @@ public class UsbSettings extends SettingsPreferenceFragment {
        addPreferencesFromResource(R.xml.usb_settings);
        root = getPreferenceScreen();


        mMtp = (CheckBoxPreference)root.findPreference(KEY_MTP);
        mPtp = (CheckBoxPreference)root.findPreference(KEY_PTP);
        mUms = (CheckBoxPreference)root.findPreference(KEY_MASS_STORAGE);
        if (!storageVolumes[0].allowMassStorage()) {
            mUms.setEnabled(false);
        }

        return root;
    }
@@ -74,6 +85,8 @@ public class UsbSettings extends SettingsPreferenceFragment {
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        mUsbManager = (UsbManager)getSystemService(Context.USB_SERVICE);
        storageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);
        storageVolumes = storageManager.getVolumeList();
    }

    @Override
@@ -99,12 +112,19 @@ public class UsbSettings extends SettingsPreferenceFragment {
        if (UsbManager.USB_FUNCTION_MTP.equals(function)) {
            mMtp.setChecked(true);
            mPtp.setChecked(false);
            mUms.setChecked(false);
        } else if (UsbManager.USB_FUNCTION_PTP.equals(function)) {
            mMtp.setChecked(false);
            mUms.setChecked(false);
            mPtp.setChecked(true);
        } else if (UsbManager.USB_FUNCTION_MASS_STORAGE.equals(function)) {
            mMtp.setChecked(false);
            mPtp.setChecked(false);
            mUms.setChecked(true);
        } else  {
            mMtp.setChecked(false);
            mPtp.setChecked(false);
            mUms.setChecked(false);
        }
    }

@@ -126,12 +146,19 @@ public class UsbSettings extends SettingsPreferenceFragment {
            }
        }
        if (preference == mMtp) {
            Settings.Secure.putInt(getContentResolver(), Settings.Secure.USB_MASS_STORAGE_ENABLED, 0);
            mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MTP, true);
            updateToggles(UsbManager.USB_FUNCTION_MTP);
        } else if (preference == mPtp) {
            Settings.Secure.putInt(getContentResolver(), Settings.Secure.USB_MASS_STORAGE_ENABLED, 0);
            mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_PTP, true);
            updateToggles(UsbManager.USB_FUNCTION_PTP);
        } else if (preference == mUms) {
            Settings.Secure.putInt(getContentResolver(), Settings.Secure.USB_MASS_STORAGE_ENABLED, 1);
            mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MASS_STORAGE, true);
            updateToggles(UsbManager.USB_FUNCTION_MASS_STORAGE);
        }

        return true;
    }
}