diff --git a/app/src/common/shared/org/mozilla/vrbrowser/SettingsStore.java b/app/src/common/shared/org/mozilla/vrbrowser/SettingsStore.java index b888b9a03..7a23c33a7 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/SettingsStore.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/SettingsStore.java @@ -9,7 +9,6 @@ import org.mozilla.telemetry.TelemetryHolder; import org.mozilla.vrbrowser.telemetry.TelemetryWrapper; -import org.mozilla.vrbrowser.ui.DeveloperOptionsWidget; public class SettingsStore { @@ -35,8 +34,8 @@ SettingsStore getInstance(final @NonNull Context aContext) { public final static boolean CONSOLE_LOGS_DEFAULT = false; public final static boolean ENV_OVERRIDE_DEFAULT = false; public final static boolean MULTIPROCESS_DEFAULT = false; - public final static DeveloperOptionsWidget.UaMode UA_MODE_DEFAULT = DeveloperOptionsWidget.UaMode.MOBILE; - public final static DeveloperOptionsWidget.InputMode INPUT_MODE_DEFAULT = DeveloperOptionsWidget.InputMode.TOUCH; + public final static int UA_MODE_DEFAULT = 0; + public final static int INPUT_MODE_DEFAULT = 1; public final static float DISPLAY_DENSITY_DEFAULT = 1.0f; public final static int WINDOW_WIDTH_DEFAULT = 800; public final static int WINDOW_HEIGHT_DEFAULT = 450; @@ -47,7 +46,7 @@ SettingsStore getInstance(final @NonNull Context aContext) { public final static String ENV_DEFAULT = "cave"; public final static float BROWSER_WORLD_WIDTH_DEFAULT = 4.0f; public final static float BROWSER_WORLD_HEIGHT_DEFAULT = 2.25f; - public final static int MSAA_DEFAULT_LEVEL = 2; + public final static int MSAA_DEFAULT_LEVEL = 1; // Enable telemetry by default (opt-out). private final static boolean enableCrashReportingByDefault = false; @@ -150,7 +149,7 @@ public void setMultiprocessEnabled(boolean isEnabled) { public int getUaMode() { return mPrefs.getInt( - mContext.getString(R.string.settings_key_desktop_version), UA_MODE_DEFAULT.ordinal()); + mContext.getString(R.string.settings_key_desktop_version), UA_MODE_DEFAULT); } public void setUaMode(int mode) { @@ -161,7 +160,7 @@ public void setUaMode(int mode) { public int getInputMode() { return mPrefs.getInt( - mContext.getString(R.string.settings_key_input_mode), INPUT_MODE_DEFAULT.ordinal()); + mContext.getString(R.string.settings_key_input_mode), INPUT_MODE_DEFAULT); } public void setInputMode(int aTouchMode) { diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/DeveloperOptionsWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/DeveloperOptionsWidget.java index 20adb3534..354672cbd 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/DeveloperOptionsWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/DeveloperOptionsWidget.java @@ -6,80 +6,48 @@ package org.mozilla.vrbrowser.ui; import android.content.Context; -import android.graphics.Color; import android.util.AttributeSet; -import android.view.KeyEvent; import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.*; +import android.widget.CompoundButton; +import android.widget.RadioGroup; +import android.widget.TextView; + import org.mozilla.vrbrowser.R; import org.mozilla.vrbrowser.SessionStore; import org.mozilla.vrbrowser.SettingsStore; import org.mozilla.vrbrowser.WidgetPlacement; import org.mozilla.vrbrowser.audio.AudioEngine; +import org.mozilla.vrbrowser.ui.settings.ButtonSetting; +import org.mozilla.vrbrowser.ui.settings.DoubleEditSetting; +import org.mozilla.vrbrowser.ui.settings.SingleEditSetting; +import org.mozilla.vrbrowser.ui.settings.RadioGroupSetting; +import org.mozilla.vrbrowser.ui.settings.SwitchSetting; public class DeveloperOptionsWidget extends UIWidget { private static final String LOGTAG = "VRB"; - private static final int COLOR_LAVANDER = Color.parseColor("#C27FFCFF"); + private AudioEngine mAudio; + private UIButton mBackButton; - public enum InputMode { - MOUSE, - TOUCH - } + private SwitchSetting mRemoteDebuggingSwitch; + private SwitchSetting mConsoleLogsSwitch; + private SwitchSetting mEnvOverrideSwitch; + private SwitchSetting mMultiprocessSwitch; - public enum UaMode { - MOBILE, - DESKTOP, - VR - } + private RadioGroupSetting mEnvironmentsRadio; + private RadioGroupSetting mPointerColorRadio; + private RadioGroupSetting mUaModeRadio; + private RadioGroupSetting mMSAARadio; + private RadioGroupSetting mEventsRadio; + + private SingleEditSetting mDensityEdit; + private SingleEditSetting mDpiEdit; + private DoubleEditSetting mWindowSizeEdit; + private DoubleEditSetting mMaxWindowSizeEdit; + + private ButtonSetting mResetButton; - private AudioEngine mAudio; - private Switch mRemoteDebuggingSwitch; - private Switch mConsoleLogsSwitch; - private Switch mEnvOverrideSwitch; - private Switch mMultiprocessSwitch; - private RadioGroup mUaModeRadio; - private RadioButton mDesktopRadio; - private RadioButton mRadioMobile; - private RadioButton mVrRadio; - private RadioGroup mMSAARadio; - private RadioButton mMSAARadioDisabled; - private RadioButton mMSAARadio2; - private RadioButton mMSAARadio4; - private UIButton mBackButton; - private RadioGroup mEventsRadio; - private RadioButton mTouchRadio; - private RadioButton mMouseRadio; - private RadioGroup mEnvsRadio; - private RadioButton mMeadowRadio; - private RadioButton mCaveRadio; - private RadioButton mVoidRadio; - private RadioGroup mPointerColorRadio; - private RadioButton mColorWhiteRadio; - private RadioButton mColorPurpleRadio; - private TextView mDensityButton; - private TextView mDensityText; - private DeveloperOptionsEditText mDensityEdit; - private TextView mWindowSizeButton; - private TextView mWindowWidthText; - private TextView mWindowHeightText; - private DeveloperOptionsEditText mWindowWidthEdit; - private DeveloperOptionsEditText mWindowHeightEdit; - private TextView mDpiButton; - private TextView mDpiText; - private DeveloperOptionsEditText mDpiEdit; - private TextView mMaxWindowSizeButton; - private TextView mMaxWindowWidthText; - private DeveloperOptionsEditText mMaxWindowWidthEdit; - private TextView mMaxWindowHeightText; - private DeveloperOptionsEditText mMaxWindowHeightEdit; - private TextView mResetButton; - private TextView mRemoteDebuggingSwitchText; - private TextView mConsoleLogsSwitchText; - private TextView mEnvOverrideSwitchText; - private TextView mMultiprocessSwitchText; private int mRestartDialogHandle = -1; public DeveloperOptionsWidget(Context aContext) { @@ -114,207 +82,76 @@ public void onClick(View view) { } }); - - mRemoteDebuggingSwitchText = findViewById(R.id.developer_options_remote_debugging_switch_text); - mRemoteDebuggingSwitch = findViewById(R.id.developer_options_remote_debugging_switch); + mRemoteDebuggingSwitch = findViewById(R.id.remote_debugging_switch); mRemoteDebuggingSwitch.setOnCheckedChangeListener(mRemoteDebuggingListener); - mRemoteDebuggingSwitch.setSoundEffectsEnabled(false); setRemoteDebugging(SettingsStore.getInstance(getContext()).isRemoteDebuggingEnabled(), false); - mConsoleLogsSwitchText = findViewById(R.id.developer_options_show_console_switch_text); - mConsoleLogsSwitch = findViewById(R.id.developer_options_show_console_switch); + mConsoleLogsSwitch = findViewById(R.id.show_console_switch); mConsoleLogsSwitch.setOnCheckedChangeListener(mConsoleLogsListener); - mConsoleLogsSwitch.setSoundEffectsEnabled(false); setConsoleLogs(SettingsStore.getInstance(getContext()).isConsoleLogsEnabled(), false); - mEnvOverrideSwitchText = findViewById(R.id.developer_options_env_override_switch_text); - mEnvOverrideSwitch = findViewById(R.id.developer_options_env_override_switch); + mEnvOverrideSwitch = findViewById(R.id.env_override_switch); mEnvOverrideSwitch.setOnCheckedChangeListener(mEnvOverrideListener); - mEnvOverrideSwitch.setSoundEffectsEnabled(false); setEnvOverride(SettingsStore.getInstance(getContext()).isEnvironmentOverrideEnabled()); - String env = SettingsStore.getInstance(getContext()).getEnvironment(); - mEnvsRadio = findViewById(R.id.radioEnv); - mEnvsRadio.setSoundEffectsEnabled(false); - mMeadowRadio = findViewById(R.id.radioMeadow); - mMeadowRadio.setSoundEffectsEnabled(false); - mCaveRadio = findViewById(R.id.radioCave); - mCaveRadio.setSoundEffectsEnabled(false); - mVoidRadio = findViewById(R.id.radioVoid); - mVoidRadio.setSoundEffectsEnabled(false); - mEnvsRadio.setOnCheckedChangeListener(mEnvsListener); - setEnv(env, false); - - int pointerColor = SettingsStore.getInstance(getContext()).getPointerColor(); - mPointerColorRadio = findViewById(R.id.radioPointerColor); - mPointerColorRadio.setSoundEffectsEnabled(false); - mColorWhiteRadio = findViewById(R.id.radioColorWhite); - mColorWhiteRadio.setSoundEffectsEnabled(false); - mColorPurpleRadio = findViewById(R.id.radioColorPurple); - mColorPurpleRadio.setSoundEffectsEnabled(false); - mPointerColorRadio.setOnCheckedChangeListener(mPointerColorListener); - setPointerColor(pointerColor, false); - - mMultiprocessSwitchText = findViewById(R.id.developer_options_multiprocess_switch_text); - mMultiprocessSwitch = findViewById(R.id.developer_options_multiprocess_switch); + mMultiprocessSwitch = findViewById(R.id.multiprocess_switch); mMultiprocessSwitch.setOnCheckedChangeListener(mMultiprocessListener); - mMultiprocessSwitch.setSoundEffectsEnabled(false); setMultiprocess(SettingsStore.getInstance(getContext()).isMultiprocessEnabled(), false); - UaMode uaMode = UaMode.values()[SettingsStore.getInstance(getContext()).getUaMode()]; - mUaModeRadio = findViewById(R.id.radioUaMode); - mUaModeRadio.setSoundEffectsEnabled(false); - mDesktopRadio = findViewById(R.id.radioDesktop); - mDesktopRadio.setSoundEffectsEnabled(false); - mRadioMobile = findViewById(R.id.radioMobile); - mRadioMobile.setSoundEffectsEnabled(false); - mVrRadio = findViewById(R.id.radioVr); - mVrRadio.setSoundEffectsEnabled(false); - mUaModeRadio.setOnCheckedChangeListener(mUaModeListener); - setUaMode(uaMode, false); - - int mssaLevel = SettingsStore.getInstance(getContext()).getMSAALevel(); - mMSAARadio = findViewById(R.id.radioMSAAMode); - mMSAARadio.setSoundEffectsEnabled(false); - mMSAARadioDisabled = findViewById(R.id.radioMSAADisabled); - mMSAARadioDisabled.setSoundEffectsEnabled(false); - mMSAARadio2 = findViewById(R.id.radioMSAA2); - mMSAARadio2.setSoundEffectsEnabled(false); - mMSAARadio4 = findViewById(R.id.radioMSAA4); - mMSAARadio4.setSoundEffectsEnabled(false); + String env = SettingsStore.getInstance(getContext()).getEnvironment(); + mEnvironmentsRadio = findViewById(R.id.environment_radio); + mEnvironmentsRadio.setOnCheckedChangeListener(mEnvsListener); + setEnv(mEnvironmentsRadio.getIdForValue(env), false); + + int color = SettingsStore.getInstance(getContext()).getPointerColor(); + mPointerColorRadio = findViewById(R.id.pointer_radio); + mPointerColorRadio.setOnCheckedChangeListener(mPointerColorListener); + setPointerColor(mPointerColorRadio.getIdForValue(color), false); + + int uaMode = SettingsStore.getInstance(getContext()).getUaMode(); + mUaModeRadio = findViewById(R.id.ua_radio); mUaModeRadio.setOnCheckedChangeListener(mUaModeListener); - setMSAAMode(mssaLevel, false); - - InputMode inputMode = InputMode.values()[SettingsStore.getInstance(getContext()).getInputMode()]; - mEventsRadio = findViewById(R.id.radioEvents); - mEventsRadio.setSoundEffectsEnabled(false); - mTouchRadio = findViewById(R.id.radioTouch); - mTouchRadio.setSoundEffectsEnabled(false); - mMouseRadio = findViewById(R.id.radioMouse); - mMouseRadio.setSoundEffectsEnabled(false); - mEventsRadio.setOnCheckedChangeListener(mInputModeListener); - setInputMode(inputMode); + setUaMode(mUaModeRadio.getIdForValue(uaMode), false); - mDensityText = findViewById(R.id.densityText); - mDensityText.setText(Float.toString(SettingsStore.getInstance(getContext()).getDisplayDensity())); - mDensityEdit = findViewById(R.id.densityEdit); - mDensityEdit.setText(Float.toString(SettingsStore.getInstance(getContext()).getDisplayDensity())); - mDensityEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) { - if (actionId == EditorInfo.IME_ACTION_DONE) { - mDensityButton.callOnClick(); - return true; - } + int msaaLevel = SettingsStore.getInstance(getContext()).getMSAALevel(); + mMSAARadio = findViewById(R.id.msaa_radio); + mMSAARadio.setOnCheckedChangeListener(mMSSAChangeListener); + setMSAAMode(mMSAARadio.getIdForValue(msaaLevel), false); - return false; - } - }); - mDensityButton = findViewById(R.id.densityEditButton); - mDensityButton.setSoundEffectsEnabled(false); - mDensityButton.setOnClickListener(mDensityListener); - setDisplayDensity(SettingsStore.getInstance(getContext()).getDisplayDensity()); + int inputMode = SettingsStore.getInstance(getContext()).getInputMode(); + mEventsRadio = findViewById(R.id.events_radio); + mEventsRadio.setOnCheckedChangeListener(mMSSAChangeListener); + setInputMode(mEventsRadio.getIdForValue(inputMode), false); - mWindowWidthText = findViewById(R.id.windowSizeWidthText); - mWindowWidthText.setText(Integer.toString(SettingsStore.getInstance(getContext()).getWindowWidth())); - mWindowWidthEdit = findViewById(R.id.windowSizeWidthEdit); - mWindowWidthEdit.setText(Integer.toString(SettingsStore.getInstance(getContext()).getWindowWidth())); - mWindowWidthEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) { - if (actionId == EditorInfo.IME_ACTION_DONE) { - mWindowSizeButton.callOnClick(); - return true; - } + mDensityEdit = findViewById(R.id.density_edit); + mDensityEdit.setFirstText(Float.toString(SettingsStore.getInstance(getContext()).getDisplayDensity())); + mDensityEdit.setOnClickListener(mDensityListener); + setDisplayDensity(SettingsStore.getInstance(getContext()).getDisplayDensity()); - return false; - } - }); - mWindowHeightText = findViewById(R.id.windowSizeHeightText); - mWindowHeightText.setText(Integer.toString(SettingsStore.getInstance(getContext()).getWindowHeight())); - mWindowHeightEdit = findViewById(R.id.windowSizeHeightEdit); - mWindowHeightEdit.setText(Integer.toString(SettingsStore.getInstance(getContext()).getWindowHeight())); - mWindowHeightEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) { - if (actionId == EditorInfo.IME_ACTION_DONE) { - mWindowSizeButton.callOnClick(); - return true; - } + mDpiEdit = findViewById(R.id.dpi_edit); + mDpiEdit.setFirstText(Integer.toString(SettingsStore.getInstance(getContext()).getDisplayDpi())); + mDpiEdit.setOnClickListener(mDpiListener); + setDisplayDpi(SettingsStore.getInstance(getContext()).getDisplayDpi()); - return false; - } - }); - mWindowSizeButton = findViewById(R.id.windowSizeEditButton); - mWindowSizeButton.setSoundEffectsEnabled(false); - mWindowSizeButton.setOnClickListener(mWindowSizeListener); + mWindowSizeEdit = findViewById(R.id.windowSize_edit); + mWindowSizeEdit.setFirstText(Integer.toString(SettingsStore.getInstance(getContext()).getWindowWidth())); + mWindowSizeEdit.setSecondText(Integer.toString(SettingsStore.getInstance(getContext()).getWindowHeight())); + mWindowSizeEdit.setOnClickListener(mWindowSizeListener); setWindowSize( SettingsStore.getInstance(getContext()).getWindowWidth(), SettingsStore.getInstance(getContext()).getWindowHeight(), - false - ); - - mDpiText = findViewById(R.id.dpiText); - mDpiText.setText(Integer.toString(SettingsStore.getInstance(getContext()).getDisplayDpi())); - mDpiEdit = findViewById(R.id.dpiEdit); - mDpiEdit.setText(Integer.toString(SettingsStore.getInstance(getContext()).getDisplayDpi())); - mDpiEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) { - if (actionId == EditorInfo.IME_ACTION_DONE) { - mDpiButton.callOnClick(); - return true; - } - - return false; - } - }); - mDpiButton = findViewById(R.id.dpiEditButton); - mDpiButton.setSoundEffectsEnabled(false); - mDpiButton.setOnClickListener(mDpiListener); - setDisplayDpi(SettingsStore.getInstance(getContext()).getDisplayDpi()); + false); - mMaxWindowWidthText = findViewById(R.id.maxWindowSizeWidthText); - mMaxWindowWidthText.setText(Integer.toString(SettingsStore.getInstance(getContext()).getMaxWindowWidth())); - mMaxWindowWidthEdit = findViewById(R.id.maxWindowSizeWidthEdit); - mMaxWindowWidthEdit.setText(Integer.toString(SettingsStore.getInstance(getContext()).getMaxWindowWidth())); - mMaxWindowWidthEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) { - if (actionId == EditorInfo.IME_ACTION_DONE) { - mMaxWindowSizeButton.callOnClick(); - return true; - } - - return false; - } - }); - mMaxWindowHeightText = findViewById(R.id.maxWindowSizeHeightText); - mMaxWindowHeightText.setText(Integer.toString(SettingsStore.getInstance(getContext()).getMaxWindowHeight())); - mMaxWindowHeightEdit = findViewById(R.id.maxWindowSizeHeightEdit); - mMaxWindowHeightEdit.setText(Integer.toString(SettingsStore.getInstance(getContext()).getMaxWindowHeight())); - mMaxWindowHeightEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) { - if (actionId == EditorInfo.IME_ACTION_DONE) { - mMaxWindowSizeButton.callOnClick(); - return true; - } - - return false; - } - }); - mMaxWindowSizeButton = findViewById(R.id.maxWindowSizeEditButton); - mMaxWindowSizeButton.setSoundEffectsEnabled(false); - mMaxWindowSizeButton.setOnClickListener(mMaxWindowSizeListener); + mMaxWindowSizeEdit = findViewById(R.id.maxWindowSize_edit); + mMaxWindowSizeEdit.setFirstText(Integer.toString(SettingsStore.getInstance(getContext()).getMaxWindowWidth())); + mMaxWindowSizeEdit.setSecondText(Integer.toString(SettingsStore.getInstance(getContext()).getMaxWindowHeight())); + mMaxWindowSizeEdit.setOnClickListener(mMaxWindowSizeListener); setMaxWindowSize( SettingsStore.getInstance(getContext()).getMaxWindowWidth(), SettingsStore.getInstance(getContext()).getMaxWindowHeight(), - false - ); + false); - mResetButton= findViewById(R.id.resetButton); - mResetButton.setSoundEffectsEnabled(false); + mResetButton = findViewById(R.id.resetButton); mResetButton.setOnClickListener(mResetListener); } @@ -343,209 +180,103 @@ private void showRestartDialog() { widget.show(); } - private CompoundButton.OnCheckedChangeListener mRemoteDebuggingListener = new CompoundButton.OnCheckedChangeListener() { + private SwitchSetting.OnCheckedChangeListener mRemoteDebuggingListener = new SwitchSetting.OnCheckedChangeListener() { @Override - public void onCheckedChanged(CompoundButton compoundButton, boolean b) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - setRemoteDebugging(b, true); + public void onCheckedChanged(CompoundButton compoundButton, boolean value, boolean doApply) { + setRemoteDebugging(value, doApply); } }; - private CompoundButton.OnCheckedChangeListener mConsoleLogsListener = new CompoundButton.OnCheckedChangeListener() { + private SwitchSetting.OnCheckedChangeListener mConsoleLogsListener = new SwitchSetting.OnCheckedChangeListener() { @Override - public void onCheckedChanged(CompoundButton compoundButton, boolean b) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - setConsoleLogs(b, true); + public void onCheckedChanged(CompoundButton compoundButton, boolean value, boolean doApply) { + setConsoleLogs(value, doApply); } }; - private CompoundButton.OnCheckedChangeListener mEnvOverrideListener = new CompoundButton.OnCheckedChangeListener() { + private SwitchSetting.OnCheckedChangeListener mEnvOverrideListener = new SwitchSetting.OnCheckedChangeListener() { @Override - public void onCheckedChanged(CompoundButton compoundButton, boolean b) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - setEnvOverride(b); - - showRestartDialog(); + public void onCheckedChanged(CompoundButton compoundButton, boolean value, boolean doApply) { + setEnvOverride(value); } }; - private CompoundButton.OnCheckedChangeListener mMultiprocessListener = new CompoundButton.OnCheckedChangeListener() { + private SwitchSetting.OnCheckedChangeListener mMultiprocessListener = new SwitchSetting.OnCheckedChangeListener() { @Override - public void onCheckedChanged(CompoundButton compoundButton, boolean b) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - setMultiprocess(b, true); + public void onCheckedChanged(CompoundButton compoundButton, boolean value, boolean doApply) { + setMultiprocess(value, doApply); } }; - private RadioGroup.OnCheckedChangeListener mUaModeListener = new RadioGroup.OnCheckedChangeListener() { + private RadioGroupSetting.OnCheckedChangeListener mUaModeListener = new RadioGroupSetting.OnCheckedChangeListener() { @Override - public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - setUaMode(getUaModeFromRadio(checkedId), true); + public void onCheckedChanged(RadioGroup radioGroup, int checkedId, boolean doApply) { + setUaMode(checkedId, true); } }; - private RadioGroup.OnCheckedChangeListener mMSSAChangeListener = new RadioGroup.OnCheckedChangeListener() { + private RadioGroupSetting.OnCheckedChangeListener mMSSAChangeListener = new RadioGroupSetting.OnCheckedChangeListener() { @Override - public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - setMSAAMode(getMSSAModeFromRadio(checkedId), true); + public void onCheckedChanged(RadioGroup radioGroup, int checkedId, boolean doApply) { + setMSAAMode(checkedId, true); } }; - private RadioGroup.OnCheckedChangeListener mInputModeListener = new RadioGroup.OnCheckedChangeListener() { + private RadioGroupSetting.OnCheckedChangeListener mInputModeListener = new RadioGroupSetting.OnCheckedChangeListener() { @Override - public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - setInputMode(getInputModeFromRadio(checkedId)); + public void onCheckedChanged(RadioGroup radioGroup, int checkedId, boolean doApply) { + setInputMode(checkedId, doApply); } }; - private RadioGroup.OnCheckedChangeListener mEnvsListener = new RadioGroup.OnCheckedChangeListener() { + private RadioGroupSetting.OnCheckedChangeListener mEnvsListener = new RadioGroupSetting.OnCheckedChangeListener() { @Override - public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - setEnv(getEnvFromRadio(checkedId), true); + public void onCheckedChanged(RadioGroup radioGroup, int checkedId, boolean doApply) { + setEnv(checkedId, doApply); } }; - private RadioGroup.OnCheckedChangeListener mPointerColorListener = new RadioGroup.OnCheckedChangeListener() { + private RadioGroupSetting.OnCheckedChangeListener mPointerColorListener = new RadioGroupSetting.OnCheckedChangeListener() { @Override - public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - setPointerColor(getPointerColorFromRadio(checkedId), true); + public void onCheckedChanged(RadioGroup radioGroup, int checkedId, boolean doApply) { + setPointerColor(checkedId, doApply); } }; private OnClickListener mDensityListener = new OnClickListener() { @Override public void onClick(View view) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - if (mDensityEdit.getVisibility() == View.VISIBLE) { - mDensityText.setVisibility(View.VISIBLE); - mDensityEdit.setVisibility(View.GONE); - mDensityButton.setText(R.string.developer_options_edit); - - } else { - mDensityText.setVisibility(View.GONE); - mDensityEdit.setVisibility(View.VISIBLE); - mDensityButton.setText(R.string.developer_options_save); - } - - float newDensity = Float.parseFloat(mDensityEdit.getText().toString()); + float newDensity = Float.parseFloat(mDensityEdit.getFirstText()); if (setDisplayDensity(newDensity)) { showRestartDialog(); } } }; - private OnClickListener mWindowSizeListener = new OnClickListener() { + private OnClickListener mDpiListener = new OnClickListener() { @Override public void onClick(View view) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - if (mWindowWidthEdit.getVisibility() == View.VISIBLE) { - mWindowWidthText.setVisibility(View.VISIBLE); - mWindowHeightText.setVisibility(View.VISIBLE); - mWindowWidthEdit.setVisibility(View.GONE); - mWindowHeightEdit.setVisibility(View.GONE); - mWindowSizeButton.setText(R.string.developer_options_edit); - - } else { - mWindowWidthText.setVisibility(View.GONE); - mWindowHeightText.setVisibility(View.GONE); - mWindowWidthEdit.setVisibility(View.VISIBLE); - mWindowHeightEdit.setVisibility(View.VISIBLE); - mWindowSizeButton.setText(R.string.developer_options_save); + int newDpi = Integer.parseInt(mDpiEdit.getFirstText()); + if (setDisplayDpi(newDpi)) { + showRestartDialog(); } - - int newWindowWidth = Integer.parseInt(mWindowWidthEdit.getText().toString()); - int newWindowHeight = Integer.parseInt(mWindowHeightEdit.getText().toString()); - setWindowSize(newWindowWidth, newWindowHeight, true); } }; - private OnClickListener mDpiListener = new OnClickListener() { + private OnClickListener mWindowSizeListener = new OnClickListener() { @Override public void onClick(View view) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - if (mDpiEdit.getVisibility() == View.VISIBLE) { - mDpiText.setVisibility(View.VISIBLE); - mDpiEdit.setVisibility(View.GONE); - mDpiButton.setText(R.string.developer_options_edit); - - } else { - mDpiText.setVisibility(View.GONE); - mDpiEdit.setVisibility(View.VISIBLE); - mDpiButton.setText(R.string.developer_options_save); - } - - int newDpi = Integer.parseInt(mDpiEdit.getText().toString()); - if (setDisplayDpi(newDpi)) { - showRestartDialog(); - } + int newWindowWidth = Integer.parseInt(mWindowSizeEdit.getFirstText()); + int newWindowHeight = Integer.parseInt(mWindowSizeEdit.getSecondText()); + setWindowSize(newWindowWidth, newWindowHeight, true); } }; private OnClickListener mMaxWindowSizeListener = new OnClickListener() { @Override public void onClick(View view) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - - if (mMaxWindowWidthEdit.getVisibility() == View.VISIBLE) { - mMaxWindowWidthText.setVisibility(View.VISIBLE); - mMaxWindowHeightText.setVisibility(View.VISIBLE); - mMaxWindowWidthEdit.setVisibility(View.GONE); - mMaxWindowHeightEdit.setVisibility(View.GONE); - mMaxWindowSizeButton.setText(R.string.developer_options_edit); - - } else { - mMaxWindowWidthText.setVisibility(View.GONE); - mMaxWindowHeightText.setVisibility(View.GONE); - mMaxWindowWidthEdit.setVisibility(View.VISIBLE); - mMaxWindowHeightEdit.setVisibility(View.VISIBLE); - mMaxWindowSizeButton.setText(R.string.developer_options_save); - } - - int newMaxWindowWidth = Integer.parseInt(mMaxWindowWidthEdit.getText().toString()); - int newMaxWindowHeight = Integer.parseInt(mMaxWindowHeightEdit.getText().toString()); + int newMaxWindowWidth = Integer.parseInt(mMaxWindowSizeEdit.getFirstText()); + int newMaxWindowHeight = Integer.parseInt(mMaxWindowSizeEdit.getSecondText()); setMaxWindowSize(newMaxWindowWidth, newMaxWindowHeight, true); } }; @@ -553,10 +284,7 @@ public void onClick(View view) { private OnClickListener mResetListener = new OnClickListener() { @Override public void onClick(View view) { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - + // Switches boolean restart = false; if (mRemoteDebuggingSwitch.isChecked() != SettingsStore.REMOTE_DEBUGGING_DEFAULT) { setRemoteDebugging(SettingsStore.REMOTE_DEBUGGING_DEFAULT, true); @@ -564,22 +292,26 @@ public void onClick(View view) { } setConsoleLogs(SettingsStore.CONSOLE_LOGS_DEFAULT, true); + setMultiprocess(SettingsStore.MULTIPROCESS_DEFAULT, true); if (mEnvOverrideSwitch.isChecked() != SettingsStore.ENV_OVERRIDE_DEFAULT) { setEnvOverride(SettingsStore.ENV_OVERRIDE_DEFAULT); restart = true; } - if (!getEnvFromRadio(mEnvsRadio.getCheckedRadioButtonId()).equals(SettingsStore.ENV_DEFAULT)) { - setEnv(SettingsStore.ENV_DEFAULT, true); + if (!mEnvironmentsRadio.getValueForId(mEnvironmentsRadio.getCheckedRadioButtonId()).equals(SettingsStore.ENV_DEFAULT)) { + setEnv(mEnvironmentsRadio.getIdForValue(SettingsStore.ENV_DEFAULT), true); } - setMultiprocess(SettingsStore.MULTIPROCESS_DEFAULT, true); - setUaMode(SettingsStore.UA_MODE_DEFAULT, true); - setInputMode(SettingsStore.INPUT_MODE_DEFAULT); + // Radios + setUaMode(mUaModeRadio.getIdForValue(SettingsStore.UA_MODE_DEFAULT), true); + setMSAAMode(mMSAARadio.getIdForValue(SettingsStore.MSAA_DEFAULT_LEVEL), true); + setInputMode(mEventsRadio.getIdForValue(SettingsStore.INPUT_MODE_DEFAULT), false); + + // Edits restart = restart | setDisplayDensity(SettingsStore.DISPLAY_DENSITY_DEFAULT); - setWindowSize(SettingsStore.WINDOW_WIDTH_DEFAULT, SettingsStore.WINDOW_HEIGHT_DEFAULT, true); restart = restart | setDisplayDpi(SettingsStore.DISPLAY_DPI_DEFAULT); + setWindowSize(SettingsStore.WINDOW_WIDTH_DEFAULT, SettingsStore.WINDOW_HEIGHT_DEFAULT, true); setMaxWindowSize(SettingsStore.MAX_WINDOW_WIDTH_DEFAULT, SettingsStore.MAX_WINDOW_HEIGHT_DEFAULT, true); if (restart) @@ -589,11 +321,11 @@ public void onClick(View view) { private void setRemoteDebugging(boolean value, boolean doApply) { mRemoteDebuggingSwitch.setOnCheckedChangeListener(null); - mRemoteDebuggingSwitch.setChecked(value); + mRemoteDebuggingSwitch.setValue(value, doApply); mRemoteDebuggingSwitch.setOnCheckedChangeListener(mRemoteDebuggingListener); - mRemoteDebuggingSwitchText.setText(value ? getContext().getString(R.string.on) : getContext().getString(R.string.off)); SettingsStore.getInstance(getContext()).setRemoteDebuggingEnabled(value); + if (doApply) { SessionStore.get().setRemoteDebugging(value); } @@ -601,9 +333,8 @@ private void setRemoteDebugging(boolean value, boolean doApply) { private void setConsoleLogs(boolean value, boolean doApply) { mConsoleLogsSwitch.setOnCheckedChangeListener(null); - mConsoleLogsSwitch.setChecked(value); + mConsoleLogsSwitch.setValue(value, doApply); mConsoleLogsSwitch.setOnCheckedChangeListener(mConsoleLogsListener); - mConsoleLogsSwitchText.setText(value ? getContext().getString(R.string.on) : getContext().getString(R.string.off)); SettingsStore.getInstance(getContext()).setConsoleLogsEnabled(value); @@ -614,18 +345,16 @@ private void setConsoleLogs(boolean value, boolean doApply) { private void setEnvOverride(boolean value) { mEnvOverrideSwitch.setOnCheckedChangeListener(null); - mEnvOverrideSwitch.setChecked(value); + mEnvOverrideSwitch.setValue(value, false); mEnvOverrideSwitch.setOnCheckedChangeListener(mEnvOverrideListener); - mEnvOverrideSwitchText.setText(value ? getContext().getString(R.string.on) : getContext().getString(R.string.off)); SettingsStore.getInstance(getContext()).setEnvironmentOverrideEnabled(value); } private void setMultiprocess(boolean value, boolean doApply) { mMultiprocessSwitch.setOnCheckedChangeListener(null); - mMultiprocessSwitch.setChecked(value); + mMultiprocessSwitch.setValue(value, false); mMultiprocessSwitch.setOnCheckedChangeListener(mMultiprocessListener); - mMultiprocessSwitchText.setText(value ? getContext().getString(R.string.on) : getContext().getString(R.string.off)); SettingsStore.getInstance(getContext()).setMultiprocessEnabled(value); @@ -634,237 +363,103 @@ private void setMultiprocess(boolean value, boolean doApply) { } } - private UaMode getUaModeFromRadio(int checkedId) { - UaMode uaMode; - switch (checkedId) { - case R.id.radioDesktop: - uaMode = UaMode.DESKTOP; - break; - case R.id.radioMobile: - uaMode = UaMode.MOBILE; - break; - default: - uaMode = UaMode.VR; - } - - return uaMode; - } - - private int getMSSAModeFromRadio(int checkedId) { - int level = 0; - switch (checkedId) { - case R.id.radioMSAADisabled: - level = 0; - break; - case R.id.radioMSAA4: - level = 4; - break; - default: - level = 2; - break; - } - - return level; - } - - - private void setUaMode(UaMode uaMode, boolean doApply) { + private void setUaMode(int checkId, boolean doApply) { mUaModeRadio.setOnCheckedChangeListener(null); - - if (uaMode == UaMode.DESKTOP) { - mDesktopRadio.setChecked(true); - mRadioMobile.setChecked(false); - mVrRadio.setChecked(false); - - } else if (uaMode == UaMode.MOBILE) { - mDesktopRadio.setChecked(false); - mRadioMobile.setChecked(true); - mVrRadio.setChecked(false); - - } else if (uaMode == UaMode.VR) { - mDesktopRadio.setChecked(false); - mRadioMobile.setChecked(false); - mVrRadio.setChecked(true); - } - + mUaModeRadio.setChecked(checkId, doApply); mUaModeRadio.setOnCheckedChangeListener(mUaModeListener); - SettingsStore.getInstance(getContext()).setUaMode(uaMode.ordinal()); + SettingsStore.getInstance(getContext()).setUaMode(checkId); if (doApply) { - SessionStore.get().setUaMode(uaMode.ordinal()); + SessionStore.get().setUaMode((Integer)mUaModeRadio.getValueForId(checkId)); } } - private void setMSAAMode(int level, boolean doApply) { + private void setMSAAMode(int checkedId, boolean doApply) { mMSAARadio.setOnCheckedChangeListener(null); - - if (level > 2) { - mMSAARadioDisabled.setChecked(false); - mMSAARadio2.setChecked(false); - mMSAARadio4.setChecked(true); - - } else if (level > 1) { - mMSAARadioDisabled.setChecked(false); - mMSAARadio2.setChecked(true); - mMSAARadio4.setChecked(false); - - } else { - mMSAARadioDisabled.setChecked(true); - mMSAARadio2.setChecked(false); - mMSAARadio4.setChecked(false); - } - + mMSAARadio.setChecked(checkedId, doApply); mMSAARadio.setOnCheckedChangeListener(mMSSAChangeListener); - if (doApply) { - SettingsStore.getInstance(getContext()).setMSAALevel(level); + SettingsStore.getInstance(getContext()).setMSAALevel((Integer)mMSAARadio.getValueForId(checkedId)); showRestartDialog(); } } - private String getEnvFromRadio(int checkedId) { - String env; - switch (checkedId) { - case R.id.radioMeadow: - env = "meadow"; - break; - case R.id.radioCave: - env = "cave"; - break; - case R.id.radioVoid: - env = "void"; - break; - default: - env = "meadow"; - } - - return env; - } - - private void setEnv(String env, boolean doApply) { - mEnvsRadio.setOnCheckedChangeListener(null); - - if (env.equalsIgnoreCase("meadow")) { - mCaveRadio.setChecked(false); - mMeadowRadio.setChecked(true); - mVoidRadio.setChecked(false); + private void setEnv(int checkedId, boolean doApply) { + mEnvironmentsRadio.setOnCheckedChangeListener(null); + mEnvironmentsRadio.setChecked(checkedId, doApply); + mEnvironmentsRadio.setOnCheckedChangeListener(mEnvsListener); - } else if (env.equalsIgnoreCase("cave")) { - mCaveRadio.setChecked(true); - mMeadowRadio.setChecked(false); - mVoidRadio.setChecked(false); - - } else if (env.equalsIgnoreCase("void")) { - mCaveRadio.setChecked(false); - mMeadowRadio.setChecked(false); - mVoidRadio.setChecked(true); - } - - mEnvsRadio.setOnCheckedChangeListener(mEnvsListener); - - SettingsStore.getInstance(getContext()).setEnvironment(env); + SettingsStore.getInstance(getContext()).setEnvironment((String) mEnvironmentsRadio.getValueForId(checkedId)); if (doApply) { mWidgetManager.updateEnvironment(); } } - private int getPointerColorFromRadio(int checkedId) { - int color; - switch (checkedId) { - case R.id.radioColorWhite: - color = SettingsStore.POINTER_COLOR_DEFAULT_DEFAULT; - break; - case R.id.radioColorPurple: - color = COLOR_LAVANDER; - break; - default: - color = SettingsStore.POINTER_COLOR_DEFAULT_DEFAULT; - } - - return color; - } - - private void setPointerColor(int color, boolean doApply) { + private void setPointerColor(int checkedId, boolean doApply) { mPointerColorRadio.setOnCheckedChangeListener(null); - - if (color == SettingsStore.POINTER_COLOR_DEFAULT_DEFAULT) { - mColorPurpleRadio.setChecked(false); - mColorWhiteRadio.setChecked(true); - - } else if (color == COLOR_LAVANDER) { - mColorPurpleRadio.setChecked(true); - mColorWhiteRadio.setChecked(false); - } - + mPointerColorRadio.setChecked(checkedId, doApply); mPointerColorRadio.setOnCheckedChangeListener(mPointerColorListener); - SettingsStore.getInstance(getContext()).setPointerColor(color); + SettingsStore.getInstance(getContext()).setPointerColor((int)mPointerColorRadio.getValueForId(checkedId)); if (doApply) { mWidgetManager.updatePointerColor(); } } - private InputMode getInputModeFromRadio(int checkedId) { - InputMode mode; - switch (checkedId) { - case R.id.radioMouse: - mode = InputMode.MOUSE; - break; - default: - mode = InputMode.TOUCH; - } - - return mode; - } - - private void setInputMode(InputMode mode) { - mUaModeRadio.setOnCheckedChangeListener(null); - - if (mode == InputMode.MOUSE) { - mTouchRadio.setChecked(false); - mMouseRadio.setChecked(true); - - } else if (mode == InputMode.TOUCH) { - mTouchRadio.setChecked(true); - mMouseRadio.setChecked(false); - } - - mUaModeRadio.setOnCheckedChangeListener(mUaModeListener); + private void setInputMode(int checkedId, boolean doApply) { + mEventsRadio.setOnCheckedChangeListener(null); + mEventsRadio.setChecked(checkedId, doApply); + mEventsRadio.setOnCheckedChangeListener(mInputModeListener); - SettingsStore.getInstance(getContext()).setInputMode(mode.ordinal()); + SettingsStore.getInstance(getContext()).setInputMode((Integer)mEventsRadio.getValueForId(checkedId)); // TODO: Wire it up } private boolean setDisplayDensity(float newDensity) { - boolean updated = false; - - float prevDensity = Float.parseFloat(mDensityText.getText().toString()); + mDensityEdit.setOnClickListener((SingleEditSetting.OnClickListener)null); + boolean restart = false; + float prevDensity = SettingsStore.getInstance(getContext()).getDisplayDensity(); if (newDensity <= 0) { newDensity = prevDensity; } else if (prevDensity != newDensity) { SettingsStore.getInstance(getContext()).setDisplayDensity(newDensity); - updated = true; + restart = true; } + mDensityEdit.setFirstText(Float.toString(newDensity)); + mDensityEdit.setOnClickListener(mDensityListener); - String newDensityStr = Float.toString(newDensity); - mDensityText.setText(newDensityStr); - mDensityEdit.setText(newDensityStr); + return restart; + } - return updated; + private boolean setDisplayDpi(int newDpi) { + mDpiEdit.setOnClickListener((SingleEditSetting.OnClickListener)null); + boolean restart = false; + int prevDensity = SettingsStore.getInstance(getContext()).getDisplayDpi(); + if (newDpi <= 0) { + newDpi = prevDensity; + + } else if (prevDensity != newDpi) { + SettingsStore.getInstance(getContext()).setDisplayDpi(newDpi); + restart = true; + } + mDpiEdit.setFirstText(Integer.toString(newDpi)); + mDpiEdit.setOnClickListener(mDpiListener); + + return restart; } private void setWindowSize(int newWindowWidth, int newWindowHeight, boolean doApply) { - int prevWindowWidth = Integer.parseInt(mWindowWidthText.getText().toString()); + int prevWindowWidth = SettingsStore.getInstance(getContext()).getWindowWidth(); if (newWindowWidth <= 0) { newWindowWidth = prevWindowWidth; } - int prevWindowHeight = Integer.parseInt(mWindowHeightText.getText().toString()); + int prevWindowHeight = SettingsStore.getInstance(getContext()).getWindowHeight(); if (newWindowHeight <= 0) { newWindowHeight = prevWindowHeight; } @@ -889,40 +484,18 @@ private void setWindowSize(int newWindowWidth, int newWindowHeight, boolean doAp } String newWindowWidthStr = Integer.toString(newWindowWidth); - mWindowWidthEdit.setText(newWindowWidthStr); - mWindowWidthText.setText(newWindowWidthStr); + mWindowSizeEdit.setFirstText(newWindowWidthStr); String newWindowHeightStr = Integer.toString(newWindowHeight); - mWindowHeightEdit.setText(newWindowHeightStr); - mWindowHeightText.setText(newWindowHeightStr); - } - - private boolean setDisplayDpi(int newDpi) { - boolean updated = false; - - int prevDpi = Integer.parseInt(mDpiText.getText().toString()); - if (newDpi <= 0) { - newDpi = prevDpi; - - } else if (prevDpi != newDpi) { - SettingsStore.getInstance(getContext()).setDisplayDpi(newDpi); - showRestartDialog(); - updated = true; - } - - String newDpiStr = Integer.toString(newDpi); - mDpiText.setText(newDpiStr); - mDpiEdit.setText(newDpiStr); - - return updated; + mWindowSizeEdit.setSecondText(newWindowHeightStr); } private void setMaxWindowSize(int newMaxWindowWidth, int newMaxWindowHeight, boolean doApply) { - int prevMaxWindowWidth = Integer.parseInt(mMaxWindowWidthText.getText().toString()); + int prevMaxWindowWidth = SettingsStore.getInstance(getContext()).getMaxWindowWidth(); if (newMaxWindowWidth <= 0) { newMaxWindowWidth = prevMaxWindowWidth; } - int prevMaxWindowHeight = Integer.parseInt(mMaxWindowHeightText.getText().toString()); + int prevMaxWindowHeight = SettingsStore.getInstance(getContext()).getMaxWindowHeight(); if (newMaxWindowHeight <= 0) { newMaxWindowHeight = prevMaxWindowHeight; } @@ -948,11 +521,9 @@ private void setMaxWindowSize(int newMaxWindowWidth, int newMaxWindowHeight, boo } String newMaxWindowWidthStr = Integer.toString(newMaxWindowWidth); - mMaxWindowWidthEdit.setText(newMaxWindowWidthStr); - mMaxWindowWidthText.setText(newMaxWindowWidthStr); + mMaxWindowSizeEdit.setFirstText(newMaxWindowWidthStr); String newMaxWindowHeightStr = Integer.toString(newMaxWindowHeight); - mMaxWindowHeightEdit.setText(newMaxWindowHeightStr); - mMaxWindowHeightText.setText(newMaxWindowHeightStr); + mMaxWindowSizeEdit.setSecondText(newMaxWindowHeightStr); } } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/settings/ButtonSetting.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/settings/ButtonSetting.java new file mode 100644 index 000000000..6264733d3 --- /dev/null +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/settings/ButtonSetting.java @@ -0,0 +1,70 @@ +package org.mozilla.vrbrowser.ui.settings; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import org.mozilla.vrbrowser.R; +import org.mozilla.vrbrowser.audio.AudioEngine; + +public class ButtonSetting extends LinearLayout { + + private AudioEngine mAudio; + private String mDescription; + private String mButtonText; + private TextView mButton; + private OnClickListener mListener; + + public ButtonSetting(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public ButtonSetting(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + + TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.ButtonSetting, defStyleAttr, 0); + mDescription = attributes.getString(R.styleable.ButtonSetting_description); + mButtonText = attributes.getString(R.styleable.ButtonSetting_buttonText); + attributes.recycle(); + + initialize(context); + } + + private void initialize(Context aContext) { + inflate(aContext, R.layout.setting_button, this); + + mAudio = AudioEngine.fromContext(aContext); + + TextView description = findViewById(R.id.setting_description); + description.setText(mButtonText); + + mButton = findViewById(R.id.button); + mButton.setText(mButtonText); + mButton.setOnClickListener(mInternalClickListener); + } + + private View.OnClickListener mInternalClickListener = new View.OnClickListener() { + @Override + public void onClick(View v) { + onClickListener(v); + } + }; + + protected void onClickListener(View v) { + if (mAudio != null) { + mAudio.playSound(AudioEngine.Sound.CLICK); + } + + if (mListener != null) { + mListener.onClick(v); + } + } + + public void setOnClickListener(OnClickListener aListener) { + mListener = aListener; + } + +} diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/settings/DoubleEditSetting.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/settings/DoubleEditSetting.java new file mode 100644 index 000000000..e960b2e2d --- /dev/null +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/settings/DoubleEditSetting.java @@ -0,0 +1,60 @@ +package org.mozilla.vrbrowser.ui.settings; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.View; +import android.widget.EditText; +import android.widget.TextView; + +import org.mozilla.vrbrowser.R; + +public class DoubleEditSetting extends SingleEditSetting { + + private String mBy; + private TextView mText2; + private EditText mEdit2; + + public DoubleEditSetting(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public DoubleEditSetting(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + + TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.EditSetting, defStyleAttr, 0); + mBy = attributes.getString(R.styleable.EditSetting_by); + attributes.recycle(); + + initialize(context); + } + + private void initialize(Context aContext) { + TextView by = findViewById(R.id.setting_by); + by.setText(mBy); + by.setVisibility(View.VISIBLE); + + mText2 = findViewById(R.id.text2); + mEdit2 = findViewById(R.id.edit2); + mEdit2.setSoundEffectsEnabled(false); + + mEdit2.setOnEditorActionListener(mInternalEditorActionListener); + } + + protected void onClickListener(View v) { + mText2.setVisibility(mEdit1.getVisibility()); + mEdit2.setVisibility(mEdit1.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE); + + super.onClickListener(v); + } + + public String getSecondText() { + return mEdit2.getText().toString(); + } + + public void setSecondText(String text) { + mText2.setText(text); + mEdit2.setText(text); + } + +} diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/settings/RadioGroupSetting.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/settings/RadioGroupSetting.java new file mode 100644 index 000000000..c3a188c3e --- /dev/null +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/settings/RadioGroupSetting.java @@ -0,0 +1,133 @@ +package org.mozilla.vrbrowser.ui.settings; + +import android.content.Context; +import android.content.res.TypedArray; +import android.support.annotation.IdRes; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.ContextThemeWrapper; +import android.widget.LinearLayout; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.TextView; + +import org.mozilla.vrbrowser.R; +import org.mozilla.vrbrowser.audio.AudioEngine; + +public class RadioGroupSetting extends LinearLayout { + + public interface OnCheckedChangeListener { + void onCheckedChanged(RadioGroup compoundButton, @IdRes int checkedId, boolean apply); + } + + private AudioEngine mAudio; + private String mDecription; + private CharSequence[] mOptions; + private Object[] mValues; + private RadioGroup mRadioGroup; + private TextView mRadioDescription; + private OnCheckedChangeListener mRadioGroupListener; + + public RadioGroupSetting(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public RadioGroupSetting(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + + TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.RadioGroupSetting, defStyleAttr, 0); + mDecription = attributes.getString(R.styleable.RadioGroupSetting_description); + mOptions = attributes.getTextArray(R.styleable.RadioGroupSetting_options); + int id = attributes.getResourceId(R.styleable.RadioGroupSetting_values, 0); + TypedArray array = context.getResources().obtainTypedArray(id); + if (array.getType(0) == TypedValue.TYPE_STRING) { + mValues = getResources().getStringArray(id); + + } else if (array.getType(0) == TypedValue.TYPE_INT_HEX || + array.getType(0) == TypedValue.TYPE_INT_DEC) { + int [] values = getResources().getIntArray(id); + mValues = new Integer[values.length]; + for (int i=0; i - + + + android:id="@+id/versionLayout" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@drawable/developer_options_background" + android:orientation="vertical" + android:paddingStart="30dp" + android:paddingTop="20dp" + android:paddingEnd="30dp" + android:paddingBottom="20dp"> + + android:id="@+id/backButton" + style="?attr/navigationBarButtonStyle" + android:layout_width="40dp" + android:layout_height="40dp" + android:layout_alignParentStart="true" + android:layout_centerVertical="true" + android:layout_marginBottom="10dp" + android:src="@drawable/ic_icon_back" + android:tint="@color/midnight" /> + + style="?attr/scrollbarStyle" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_height="60dp" + app:description="@string/developer_options_display_dpi"/> + + + + + + diff --git a/app/src/main/res/layout/setting_button.xml b/app/src/main/res/layout/setting_button.xml new file mode 100644 index 000000000..6091be685 --- /dev/null +++ b/app/src/main/res/layout/setting_button.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/setting_edit.xml b/app/src/main/res/layout/setting_edit.xml new file mode 100644 index 000000000..724861521 --- /dev/null +++ b/app/src/main/res/layout/setting_edit.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/setting_radio_group.xml b/app/src/main/res/layout/setting_radio_group.xml new file mode 100644 index 000000000..8d583a337 --- /dev/null +++ b/app/src/main/res/layout/setting_radio_group.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/setting_switch.xml b/app/src/main/res/layout/setting_switch.xml new file mode 100644 index 000000000..53fe667b5 --- /dev/null +++ b/app/src/main/res/layout/setting_switch.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml new file mode 100644 index 000000000..475c437a3 --- /dev/null +++ b/app/src/main/res/values/attrs.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 4a40135fe..3c50ba49d 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,5 +1,6 @@ + #25003E #000000 #0b1926 #19212A diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml deleted file mode 100644 index 61eb3009d..000000000 --- a/app/src/main/res/values/ic_launcher_background.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #25003E - \ No newline at end of file diff --git a/app/src/main/res/values/non_L10n.xml b/app/src/main/res/values/non_L10n.xml index 3fb0362ff..9a707fd08 100644 --- a/app/src/main/res/values/non_L10n.xml +++ b/app/src/main/res/values/non_L10n.xml @@ -29,6 +29,7 @@ position https://support.mozilla.org/kb/crash-reporting-firefox-reality org.mozilla.vrbrowser.CRASH_RECEIVER_PERMISSION + x https://location.services.mozilla.com/v1/country @@ -46,4 +47,29 @@ https://yandex.by/search https://yandex.com.tr/search https://yandex.kz/search + + + + @string/developer_options_env_void + @string/developer_options_env_cave + @string/developer_options_env_meadow + + + @string/developer_options_pointer_white + @string/developer_options_pointer_purple + + + @string/developer_options_ua_mobile + @string/developer_options_ua_desktop + @string/developer_options_ua_vr + + + @string/developer_options_msaa_disabled + @string/developer_options_msaa_2 + @string/developer_options_msaa_4 + + + @string/developer_options_mouse + @string/developer_options_touch + diff --git a/app/src/main/res/values/settings_values.xml b/app/src/main/res/values/settings_values.xml new file mode 100644 index 000000000..204f09965 --- /dev/null +++ b/app/src/main/res/values/settings_values.xml @@ -0,0 +1,26 @@ + + + + void + cave + meadow + + + 0xFFFFFFFF + 0xC27FFCFF + + + 0 + 1 + 2 + + + 0 + 4 + 2 + + + 0 + 1 + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e06c4af87..fccdcefc8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -35,7 +35,6 @@ Input Events Display Density: Window Size: - by Mouse Touch Edit @@ -51,7 +50,7 @@ VR Reset Developer Settings Reset - Environment + Environment Meadow Cave Void diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 6d51aef31..290d9829b 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,5 +1,4 @@ - @@ -16,24 +15,19 @@ + - - - - - - - - - - - - - - - - +