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

Commit ef0c7e73 authored by Roman Birg's avatar Roman Birg
Browse files

Settings: persist profile dialogs while rotationg screen



Change-Id: Ie15b99919377bb2c2b7b5f203ceb7e62f064911c
Signed-off-by: default avatarRoman Birg <roman@cyngn.com>
parent db4845af
Loading
Loading
Loading
Loading
+199 −138
Original line number Diff line number Diff line
@@ -110,6 +110,22 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
    private static final int MENU_REMOVE = Menu.FIRST;
    private static final int MENU_FILL_PROFILE = Menu.FIRST + 1;

    private static final int DIALOG_FILL_FROM_SETTINGS = 1;
    private static final int DIALOG_AIRPLANE_MODE = 2;
    private static final int DIALOG_BRIGHTNESS = 3;
    private static final int DIALOG_LOCK_MODE = 4;
    private static final int DIALOG_DOZE_MODE = 5;
    private static final int DIALOG_RING_MODE = 6;
    private static final int DIALOG_CONNECTION_OVERRIDE = 7;
    private static final int DIALOG_VOLUME_STREAM = 8;
    private static final int DIALOG_PROFILE_NAME = 9;

    private static final String LAST_SELECTED_POSITION = "last_selected_position";
    private static final int DIALOG_REMOVE_PROFILE = 10;

    private int mLastSelectedPosition = -1;
    private Item mSelectedItem;

    Profile mProfile;
    ItemListAdapter mAdapter;
    ProfileManager mProfileManager;
@@ -161,7 +177,12 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
        setHasOptionsMenu(true);
        if (mNewProfileMode && savedInstanceState == null) {
            // only pop this up on first creation
            requestFillProfileFromSettingsDialog();
            showDialog(DIALOG_FILL_FROM_SETTINGS);
        } else if (savedInstanceState != null) {
            mLastSelectedPosition = savedInstanceState.getInt("last_selected_position", -1);
            if (mLastSelectedPosition != -1) {
                mSelectedItem = mAdapter.getItem(mLastSelectedPosition);
            }
        }
    }

@@ -269,11 +290,6 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
        mAdapter.notifyDataSetChanged();
    }

    @Override
    public void onResume() {
        super.onResume();
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
@@ -296,10 +312,11 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case MENU_REMOVE:
                requestRemoveProfileDialog();
                mLastSelectedPosition = -1; // reset
                showDialog(DIALOG_REMOVE_PROFILE);
                return true;
            case MENU_FILL_PROFILE:
                requestFillProfileFromSettingsDialog();
                showDialog(DIALOG_FILL_FROM_SETTINGS);
                return true;
        }
        return super.onOptionsItemSelected(item);
@@ -356,7 +373,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
        }
    }

    private void requestFillProfileFromSettingsDialog() {
    private AlertDialog requestFillProfileFromSettingsDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setMessage(R.string.profile_populate_profile_from_state);
        builder.setNegativeButton(R.string.no, null);
@@ -367,7 +384,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
                dialog.dismiss();
            }
        });
        builder.show();
        return builder.create();
    }

    private void fillProfileFromCurrentSettings() {
@@ -485,7 +502,58 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
        // but let's skip this one
    }

    private void requestRemoveProfileDialog() {
    @Override
    public Dialog onCreateDialog(int dialogId) {
        switch (dialogId) {
            case DIALOG_FILL_FROM_SETTINGS:
                return requestFillProfileFromSettingsDialog();

            case DIALOG_AIRPLANE_MODE:
                return requestAirplaneModeDialog(((AirplaneModeItem) mSelectedItem).getSettings());

            case DIALOG_BRIGHTNESS:
                return requestBrightnessDialog(((BrightnessItem) mSelectedItem).getSettings());

            case DIALOG_LOCK_MODE:
                return requestLockscreenModeDialog();

            case DIALOG_DOZE_MODE:
                return requestDozeModeDialog();

            case DIALOG_RING_MODE:
                return requestRingModeDialog(((RingModeItem) mSelectedItem).getSettings());

            case DIALOG_CONNECTION_OVERRIDE:
                ConnectionOverrideItem connItem = (ConnectionOverrideItem) mSelectedItem;
                if (connItem.getConnectionType() == ConnectionSettings.PROFILE_CONNECTION_2G3G4G) {
                    return requestMobileConnectionOverrideDialog(connItem.getSettings());
                } else {
                    return requestConnectionOverrideDialog(connItem.getSettings());
                }

            case DIALOG_VOLUME_STREAM:
                VolumeStreamItem volumeItem = (VolumeStreamItem) mSelectedItem;
                return requestVolumeDialog(volumeItem.getStreamType(), volumeItem.getSettings());

            case DIALOG_PROFILE_NAME:
                return requestProfileName();

            case DIALOG_REMOVE_PROFILE:
                return requestRemoveProfileDialog();

        }
        return super.onCreateDialog(dialogId);
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        if (mLastSelectedPosition != -1) {
            outState.putInt(LAST_SELECTED_POSITION, mLastSelectedPosition);
        }
    }

    private AlertDialog requestRemoveProfileDialog() {
        Profile current = mProfileManager.getActiveProfile();
        if (mProfile.getUuid().equals(current.getUuid())) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
@@ -496,8 +564,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
                    dialog.dismiss();
                }
            });
            builder.show();
            return;
            return builder.create();
        }

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
@@ -511,10 +578,10 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
            }
        });
        builder.setNegativeButton(R.string.no, null);
        builder.show();
        return builder.create();
    }

    private void requestLockscreenModeDialog() {
    private AlertDialog requestLockscreenModeDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final String[] lockEntries =
                getResources().getStringArray(R.array.profile_lockmode_entries);
@@ -540,10 +607,10 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
                });

        builder.setNegativeButton(android.R.string.cancel, null);
        builder.show();
        return builder.create();
    }

    private void requestDozeModeDialog() {
    private AlertDialog requestDozeModeDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final String[] dozeEntries =
                getResources().getStringArray(R.array.profile_doze_entries);
@@ -569,10 +636,10 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
                });

        builder.setNegativeButton(android.R.string.cancel, null);
        builder.show();
        return builder.create();
    }

    private void requestAirplaneModeDialog(final AirplaneModeSettings setting) {
    private AlertDialog requestAirplaneModeDialog(final AirplaneModeSettings setting) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final String[] connectionNames =
                getResources().getStringArray(R.array.profile_action_generic_connection_entries);
@@ -612,7 +679,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
                });

        builder.setNegativeButton(android.R.string.cancel, null);
        builder.show();
        return builder.create();
    }

    private void requestProfileRingMode() {
@@ -633,7 +700,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
        }
    }

    private void requestRingModeDialog(final RingModeSettings setting) {
    private AlertDialog requestRingModeDialog(final RingModeSettings setting) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final String[] values = getResources().getStringArray(R.array.ring_mode_values);
        final String[] names = getResources().getStringArray(R.array.ring_mode_entries);
@@ -681,12 +748,12 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
                });

        builder.setNegativeButton(android.R.string.cancel, null);
        builder.show();
        return builder.create();
    }

    private void requestConnectionOverrideDialog(final ConnectionSettings setting) {
    private AlertDialog requestConnectionOverrideDialog(final ConnectionSettings setting) {
        if (setting == null) {
            throw new UnsupportedOperationException("connection setting cannot be null yo");
            throw new UnsupportedOperationException("connection setting cannot be null");
        }
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final String[] connectionNames =
@@ -727,12 +794,12 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
                });

        builder.setNegativeButton(android.R.string.cancel, null);
        builder.show();
        return builder.create();
    }

    private void requestMobileConnectionOverrideDialog(final ConnectionSettings setting) {
    private AlertDialog requestMobileConnectionOverrideDialog(final ConnectionSettings setting) {
        if (setting == null) {
            throw new UnsupportedOperationException("connection setting cannot be null yo");
            throw new UnsupportedOperationException("connection setting cannot be null");
        }
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final String[] connectionNames =
@@ -764,10 +831,10 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
                });

        builder.setNegativeButton(android.R.string.cancel, null);
        builder.show();
        return builder.create();
    }

    public void requestVolumeDialog(int streamId,
    public AlertDialog requestVolumeDialog(int streamId,
                                    final StreamSettings streamSettings) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(VolumeStreamItem.getNameForStream(streamId));
@@ -803,18 +870,19 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
            }
        });
        builder.setNegativeButton(android.R.string.cancel, null);
        builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
        setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialogInterface) {
                if (volumizer != null) {
                    volumizer.stop();
                }
                setOnDismissListener(null); // re-set this for next dialog
            }
        });
        builder.show();
        return builder.create();
    }

    public void requestBrightnessDialog(final BrightnessSettings brightnessSettings) {
    public AlertDialog requestBrightnessDialog(final BrightnessSettings brightnessSettings) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(R.string.profile_brightness_title);

@@ -855,10 +923,10 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
                dialog.dismiss();
            }
        });
        builder.show();
        return builder.create();
    }

    private void requestProfileName() {
    private AlertDialog requestProfileName() {
        LayoutInflater inflater = LayoutInflater.from(getActivity());
        View dialogView = inflater.inflate(R.layout.profile_name_dialog, null);

@@ -908,7 +976,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
                imm.showSoftInput(entry, InputMethodManager.SHOW_IMPLICIT);
            }
        });
        alertDialog.show();
        return alertDialog;
    }

    private void requestActiveAppGroupsDialog() {
@@ -976,32 +1044,25 @@ public class SetupActionsFragment extends SettingsPreferenceFragment
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        final Item itemAtPosition = (Item) parent.getItemAtPosition(position);
        mSelectedItem = itemAtPosition;
        mLastSelectedPosition = position;

        if (itemAtPosition instanceof AirplaneModeItem) {
            AirplaneModeItem item = (AirplaneModeItem) itemAtPosition;
            requestAirplaneModeDialog(item.getSettings());
            showDialog(DIALOG_AIRPLANE_MODE);
        } else if (itemAtPosition instanceof BrightnessItem) {
            BrightnessItem item = (BrightnessItem) itemAtPosition;
            requestBrightnessDialog(item.getSettings());
            showDialog(DIALOG_BRIGHTNESS);
        } else if (itemAtPosition instanceof LockModeItem) {
            requestLockscreenModeDialog();
            showDialog(DIALOG_LOCK_MODE);
        } else if (itemAtPosition instanceof DozeModeItem) {
            requestDozeModeDialog();
            showDialog(DIALOG_DOZE_MODE);
        } else if (itemAtPosition instanceof RingModeItem) {
            RingModeItem item = (RingModeItem) itemAtPosition;
            requestRingModeDialog(item.getSettings());
            showDialog(DIALOG_RING_MODE);
        } else if (itemAtPosition instanceof ConnectionOverrideItem) {
            ConnectionOverrideItem item = (ConnectionOverrideItem) itemAtPosition;
            if (item.getConnectionType() == ConnectionSettings.PROFILE_CONNECTION_2G3G4G) {
                requestMobileConnectionOverrideDialog(item.getSettings());
            } else {
                requestConnectionOverrideDialog(item.getSettings());
            }
            showDialog(DIALOG_CONNECTION_OVERRIDE);
        } else if (itemAtPosition instanceof VolumeStreamItem) {
            VolumeStreamItem item = (VolumeStreamItem) itemAtPosition;
            requestVolumeDialog(item.getStreamType(), item.getSettings());
            showDialog(DIALOG_VOLUME_STREAM);
        } else if (itemAtPosition instanceof ProfileNameItem) {
            requestProfileName();
            showDialog(DIALOG_PROFILE_NAME);
        } else if (itemAtPosition instanceof TriggerItem) {
            TriggerItem item = (TriggerItem) itemAtPosition;
            openTriggersFragment(item.getTriggerType());