diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/ControllerOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/ControllerOptionsView.java index b3e475c5d..8b0c19f09 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/ControllerOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/ControllerOptionsView.java @@ -6,22 +6,19 @@ package org.mozilla.vrbrowser.ui.widgets.settings; import android.content.Context; -import android.widget.ScrollView; +import android.view.LayoutInflater; + +import androidx.databinding.DataBindingUtil; import org.mozilla.vrbrowser.R; -import org.mozilla.vrbrowser.audio.AudioEngine; import org.mozilla.vrbrowser.browser.SettingsStore; -import org.mozilla.vrbrowser.ui.views.UIButton; -import org.mozilla.vrbrowser.ui.views.settings.ButtonSetting; +import org.mozilla.vrbrowser.databinding.OptionsControllerBinding; import org.mozilla.vrbrowser.ui.views.settings.RadioGroupSetting; import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate; class ControllerOptionsView extends SettingsView { - private AudioEngine mAudio; - private UIButton mBackButton; - private RadioGroupSetting mPointerColorRadio; - private RadioGroupSetting mScrollDirectionRadio; - private ButtonSetting mResetButton; + + private OptionsControllerBinding mBinding; public ControllerOptionsView(Context aContext, WidgetManagerDelegate aWidgetManager) { super(aContext, aWidgetManager); @@ -29,60 +26,55 @@ public ControllerOptionsView(Context aContext, WidgetManagerDelegate aWidgetMana } private void initialize(Context aContext) { - inflate(aContext, R.layout.options_controller, this); - mAudio = AudioEngine.fromContext(aContext); + LayoutInflater inflater = LayoutInflater.from(aContext); + + // Inflate this data binding layout + mBinding = DataBindingUtil.inflate(inflater, R.layout.options_controller, this, true); - mBackButton = findViewById(R.id.backButton); - mBackButton.setOnClickListener(view -> { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - onDismiss(); - }); + mScrollbar = mBinding.scrollbar; - mScrollbar = findViewById(R.id.scrollbar); + // Header + mBinding.headerLayout.setBackClickListener(view -> onDismiss()); + + // Footer + mBinding.footerLayout.setResetClickListener(v -> resetOptions()); int color = SettingsStore.getInstance(getContext()).getPointerColor(); - mPointerColorRadio = findViewById(R.id.pointer_color_radio); - mPointerColorRadio.setOnCheckedChangeListener(mPointerColorListener); - setPointerColor(mPointerColorRadio.getIdForValue(color), false); + mBinding.pointerColorRadio.setOnCheckedChangeListener(mPointerColorListener); + setPointerColor(mBinding.pointerColorRadio.getIdForValue(color), false); int scrollDirection = SettingsStore.getInstance(getContext()).getScrollDirection(); - mScrollDirectionRadio = findViewById(R.id.scroll_direction_radio); - mScrollDirectionRadio.setOnCheckedChangeListener(mScrollDirectionListener); - setScrollDirection(mScrollDirectionRadio.getIdForValue(scrollDirection), false); - - mResetButton = findViewById(R.id.resetButton); - mResetButton.setOnClickListener(v -> resetOptions()); + mBinding.scrollDirectionRadio.setOnCheckedChangeListener(mScrollDirectionListener); + setScrollDirection(mBinding.scrollDirectionRadio.getIdForValue(scrollDirection), false); } private void resetOptions() { - if (!mPointerColorRadio.getValueForId(mPointerColorRadio.getCheckedRadioButtonId()).equals(SettingsStore.POINTER_COLOR_DEFAULT_DEFAULT)) { - setPointerColor(mPointerColorRadio.getIdForValue(SettingsStore.POINTER_COLOR_DEFAULT_DEFAULT), true); + if (!mBinding.pointerColorRadio.getValueForId(mBinding.pointerColorRadio.getCheckedRadioButtonId()).equals(SettingsStore.POINTER_COLOR_DEFAULT_DEFAULT)) { + setPointerColor(mBinding.pointerColorRadio.getIdForValue(SettingsStore.POINTER_COLOR_DEFAULT_DEFAULT), true); } - if (!mScrollDirectionRadio.getValueForId(mScrollDirectionRadio.getCheckedRadioButtonId()).equals(SettingsStore.SCROLL_DIRECTION_DEFAULT)) { - setScrollDirection(mScrollDirectionRadio.getIdForValue(SettingsStore.SCROLL_DIRECTION_DEFAULT), true); + if (!mBinding.scrollDirectionRadio.getValueForId(mBinding.scrollDirectionRadio.getCheckedRadioButtonId()).equals(SettingsStore.SCROLL_DIRECTION_DEFAULT)) { + setScrollDirection(mBinding.scrollDirectionRadio.getIdForValue(SettingsStore.SCROLL_DIRECTION_DEFAULT), true); } } private void setPointerColor(int checkedId, boolean doApply) { - mPointerColorRadio.setOnCheckedChangeListener(null); - mPointerColorRadio.setChecked(checkedId, doApply); - mPointerColorRadio.setOnCheckedChangeListener(mPointerColorListener); + mBinding.pointerColorRadio.setOnCheckedChangeListener(null); + mBinding.pointerColorRadio.setChecked(checkedId, doApply); + mBinding.pointerColorRadio.setOnCheckedChangeListener(mPointerColorListener); if (doApply) { - SettingsStore.getInstance(getContext()).setPointerColor((int)mPointerColorRadio.getValueForId(checkedId)); + SettingsStore.getInstance(getContext()).setPointerColor((int)mBinding.pointerColorRadio.getValueForId(checkedId)); mWidgetManager.updatePointerColor(); } } private void setScrollDirection(int checkedId, boolean doApply) { - mScrollDirectionRadio.setOnCheckedChangeListener(null); - mScrollDirectionRadio.setChecked(checkedId, doApply); - mScrollDirectionRadio.setOnCheckedChangeListener(mScrollDirectionListener); + mBinding.scrollDirectionRadio.setOnCheckedChangeListener(null); + mBinding.scrollDirectionRadio.setChecked(checkedId, doApply); + mBinding.scrollDirectionRadio.setOnCheckedChangeListener(mScrollDirectionListener); if (doApply) { - SettingsStore.getInstance(getContext()).setScrollDirection((int)mScrollDirectionRadio.getValueForId(checkedId)); + SettingsStore.getInstance(getContext()).setScrollDirection((int)mBinding.scrollDirectionRadio.getValueForId(checkedId)); } } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DeveloperOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DeveloperOptionsView.java index 633e1d78a..8fc615234 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DeveloperOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DeveloperOptionsView.java @@ -6,28 +6,23 @@ package org.mozilla.vrbrowser.ui.widgets.settings; import android.content.Context; +import android.view.LayoutInflater; import android.view.View; +import androidx.databinding.DataBindingUtil; + import org.mozilla.vrbrowser.R; -import org.mozilla.vrbrowser.audio.AudioEngine; import org.mozilla.vrbrowser.browser.SettingsStore; import org.mozilla.vrbrowser.browser.engine.SessionStore; -import org.mozilla.vrbrowser.ui.views.UIButton; -import org.mozilla.vrbrowser.ui.views.settings.ButtonSetting; +import org.mozilla.vrbrowser.databinding.OptionsDeveloperBinding; import org.mozilla.vrbrowser.ui.views.settings.SwitchSetting; import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate; import static org.mozilla.vrbrowser.utils.ServoUtils.isServoAvailable; class DeveloperOptionsView extends SettingsView { - private AudioEngine mAudio; - private UIButton mBackButton; - private SwitchSetting mRemoteDebuggingSwitch; - private SwitchSetting mConsoleLogsSwitch; - private SwitchSetting mMultiprocessSwitch; - private SwitchSetting mPerformanceSwitch; - private SwitchSetting mServoSwitch; - private ButtonSetting mResetButton; + + private OptionsDeveloperBinding mBinding; public DeveloperOptionsView(Context aContext, WidgetManagerDelegate aWidgetManager) { super(aContext, aWidgetManager); @@ -35,47 +30,39 @@ public DeveloperOptionsView(Context aContext, WidgetManagerDelegate aWidgetManag } private void initialize(Context aContext) { - inflate(aContext, R.layout.options_developer, this); + LayoutInflater inflater = LayoutInflater.from(aContext); - mAudio = AudioEngine.fromContext(aContext); + // Inflate this data binding layout + mBinding = DataBindingUtil.inflate(inflater, R.layout.options_developer, this, true); - mBackButton = findViewById(R.id.backButton); - mBackButton.setOnClickListener(view -> { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } + mScrollbar = mBinding.scrollbar; - onDismiss(); - }); + // Header + mBinding.headerLayout.setBackClickListener(view -> onDismiss()); - mRemoteDebuggingSwitch = findViewById(R.id.remote_debugging_switch); - mRemoteDebuggingSwitch.setOnCheckedChangeListener(mRemoteDebuggingListener); + // Footer + mBinding.footerLayout.setResetClickListener(mResetListener); + + // Switches + mBinding.remoteDebuggingSwitch.setOnCheckedChangeListener(mRemoteDebuggingListener); setRemoteDebugging(SettingsStore.getInstance(getContext()).isRemoteDebuggingEnabled(), false); - mConsoleLogsSwitch = findViewById(R.id.show_console_switch); - mConsoleLogsSwitch.setOnCheckedChangeListener(mConsoleLogsListener); + mBinding.showConsoleSwitch.setOnCheckedChangeListener(mConsoleLogsListener); setConsoleLogs(SettingsStore.getInstance(getContext()).isConsoleLogsEnabled(), false); - mMultiprocessSwitch = findViewById(R.id.multiprocess_switch); - mMultiprocessSwitch.setOnCheckedChangeListener(mMultiprocessListener); + mBinding.multiprocessSwitch.setOnCheckedChangeListener(mMultiprocessListener); setMultiprocess(SettingsStore.getInstance(getContext()).isMultiprocessEnabled(), false); - mPerformanceSwitch = findViewById(R.id.performance_monitor_switch); - mPerformanceSwitch.setOnCheckedChangeListener(mPerformanceListener); + mBinding.performanceMonitorSwitch.setOnCheckedChangeListener(mPerformanceListener); setPerformance(SettingsStore.getInstance(getContext()).isPerformanceMonitorEnabled(), false); - mServoSwitch = findViewById(R.id.servo_switch); if (!isServoAvailable()) { - mServoSwitch.setVisibility(View.GONE); + mBinding.servoSwitch.setVisibility(View.GONE); + } else { - mServoSwitch.setOnCheckedChangeListener(mServoListener); + mBinding.servoSwitch.setOnCheckedChangeListener(mServoListener); setServo(SettingsStore.getInstance(getContext()).isServoEnabled(), false); } - - mResetButton = findViewById(R.id.resetButton); - mResetButton.setOnClickListener(mResetListener); - - mScrollbar = findViewById(R.id.scrollbar); } private SwitchSetting.OnCheckedChangeListener mRemoteDebuggingListener = (compoundButton, value, doApply) -> { @@ -100,30 +87,34 @@ private void initialize(Context aContext) { private OnClickListener mResetListener = (view) -> { boolean restart = false; - if (mRemoteDebuggingSwitch.isChecked() != SettingsStore.REMOTE_DEBUGGING_DEFAULT) { + if (mBinding.remoteDebuggingSwitch.isChecked() != SettingsStore.REMOTE_DEBUGGING_DEFAULT) { setRemoteDebugging(SettingsStore.REMOTE_DEBUGGING_DEFAULT, true); restart = true; } - if (mConsoleLogsSwitch.isChecked() != SettingsStore.CONSOLE_LOGS_DEFAULT) { + if (mBinding.showConsoleSwitch.isChecked() != SettingsStore.CONSOLE_LOGS_DEFAULT) { setConsoleLogs(SettingsStore.CONSOLE_LOGS_DEFAULT, true); } - if (mMultiprocessSwitch.isChecked() != SettingsStore.MULTIPROCESS_DEFAULT) { + if (mBinding.multiprocessSwitch.isChecked() != SettingsStore.MULTIPROCESS_DEFAULT) { setMultiprocess(SettingsStore.MULTIPROCESS_DEFAULT, true); } - if (mServoSwitch.isChecked() != SettingsStore.SERVO_DEFAULT) { + if (mBinding.servoSwitch.isChecked() != SettingsStore.SERVO_DEFAULT) { setServo(SettingsStore.SERVO_DEFAULT, true); } + if (mBinding.performanceMonitorSwitch.isChecked() != SettingsStore.PERFORMANCE_MONITOR_DEFAULT) { + setPerformance(SettingsStore.PERFORMANCE_MONITOR_DEFAULT, true); + } + if (restart && mDelegate != null) { showRestartDialog(); } }; private void setRemoteDebugging(boolean value, boolean doApply) { - mRemoteDebuggingSwitch.setOnCheckedChangeListener(null); - mRemoteDebuggingSwitch.setValue(value, doApply); - mRemoteDebuggingSwitch.setOnCheckedChangeListener(mRemoteDebuggingListener); + mBinding.remoteDebuggingSwitch.setOnCheckedChangeListener(null); + mBinding.remoteDebuggingSwitch.setValue(value, doApply); + mBinding.remoteDebuggingSwitch.setOnCheckedChangeListener(mRemoteDebuggingListener); SettingsStore.getInstance(getContext()).setRemoteDebuggingEnabled(value); @@ -133,9 +124,9 @@ private void setRemoteDebugging(boolean value, boolean doApply) { } private void setConsoleLogs(boolean value, boolean doApply) { - mConsoleLogsSwitch.setOnCheckedChangeListener(null); - mConsoleLogsSwitch.setValue(value, doApply); - mConsoleLogsSwitch.setOnCheckedChangeListener(mConsoleLogsListener); + mBinding.showConsoleSwitch.setOnCheckedChangeListener(null); + mBinding.showConsoleSwitch.setValue(value, doApply); + mBinding.showConsoleSwitch.setOnCheckedChangeListener(mConsoleLogsListener); SettingsStore.getInstance(getContext()).setConsoleLogsEnabled(value); @@ -145,9 +136,9 @@ private void setConsoleLogs(boolean value, boolean doApply) { } private void setMultiprocess(boolean value, boolean doApply) { - mMultiprocessSwitch.setOnCheckedChangeListener(null); - mMultiprocessSwitch.setValue(value, false); - mMultiprocessSwitch.setOnCheckedChangeListener(mMultiprocessListener); + mBinding.multiprocessSwitch.setOnCheckedChangeListener(null); + mBinding.multiprocessSwitch.setValue(value, false); + mBinding.multiprocessSwitch.setOnCheckedChangeListener(mMultiprocessListener); SettingsStore.getInstance(getContext()).setMultiprocessEnabled(value); @@ -157,17 +148,17 @@ private void setMultiprocess(boolean value, boolean doApply) { } private void setPerformance(boolean value, boolean doApply) { - mPerformanceSwitch.setOnCheckedChangeListener(null); - mPerformanceSwitch.setValue(value, false); - mPerformanceSwitch.setOnCheckedChangeListener(mPerformanceListener); + mBinding.performanceMonitorSwitch.setOnCheckedChangeListener(null); + mBinding.performanceMonitorSwitch.setValue(value, false); + mBinding.performanceMonitorSwitch.setOnCheckedChangeListener(mPerformanceListener); SettingsStore.getInstance(getContext()).setPerformanceMonitorEnabled(value); } private void setServo(boolean value, boolean doApply) { - mServoSwitch.setOnCheckedChangeListener(null); - mServoSwitch.setValue(value, false); - mServoSwitch.setOnCheckedChangeListener(mServoListener); + mBinding.servoSwitch.setOnCheckedChangeListener(null); + mBinding.servoSwitch.setValue(value, false); + mBinding.servoSwitch.setOnCheckedChangeListener(mServoListener); SettingsStore.getInstance(getContext()).setServoEnabled(value); diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayLanguageOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayLanguageOptionsView.java index d57ee3598..637d9eed2 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayLanguageOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayLanguageOptionsView.java @@ -7,9 +7,13 @@ import android.content.Context; import android.graphics.Point; +import android.view.LayoutInflater; + +import androidx.databinding.DataBindingUtil; import org.mozilla.vrbrowser.R; import org.mozilla.vrbrowser.browser.engine.SessionStore; +import org.mozilla.vrbrowser.databinding.OptionsLanguageDisplayBinding; import org.mozilla.vrbrowser.ui.views.settings.RadioGroupSetting; import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate; import org.mozilla.vrbrowser.ui.widgets.WidgetPlacement; @@ -17,7 +21,7 @@ class DisplayLanguageOptionsView extends SettingsView { - private RadioGroupSetting mLanguage; + private OptionsLanguageDisplayBinding mBinding; public DisplayLanguageOptionsView(Context aContext, WidgetManagerDelegate aWidgetManager) { super(aContext, aWidgetManager); @@ -25,26 +29,28 @@ public DisplayLanguageOptionsView(Context aContext, WidgetManagerDelegate aWidge } private void initialize(Context aContext) { - inflate(aContext, R.layout.options_language_display, this); + LayoutInflater inflater = LayoutInflater.from(aContext); + + // Inflate this data binding layout + mBinding = DataBindingUtil.inflate(inflater, R.layout.options_language_display, this, true); + + mScrollbar = mBinding.scrollbar; // Header - SettingsHeader header = findViewById(R.id.header_layout); - header.setBackClickListener(view -> { + mBinding.headerLayout.setBackClickListener(view -> { mDelegate.showView(new LanguageOptionsView(getContext(), mWidgetManager)); }); - header.setHelpClickListener(view -> { + mBinding.headerLayout.setHelpClickListener(view -> { SessionStore.get().getActiveStore().loadUri(getResources().getString(R.string.sumo_language_display_url)); mDelegate.exitWholeSettings(); }); // Footer - SettingsFooter footer = findViewById(R.id.footer_layout); - footer.setResetClickListener(mResetListener); + mBinding.footerLayout.setResetClickListener(mResetListener); String language = LocaleUtils.getDisplayLocale(getContext()); - mLanguage = findViewById(R.id.languageRadio); - mLanguage.setOnCheckedChangeListener(mLanguageListener); - setLanguage(mLanguage.getIdForValue(language), false); + mBinding.languageRadio.setOnCheckedChangeListener(mLanguageListener); + setLanguage(mBinding.languageRadio.getIdForValue(language), false); } @Override @@ -52,18 +58,18 @@ protected boolean reset() { String systemLocale = LocaleUtils.getSystemLocale(); String currentLocale = LocaleUtils.getCurrentLocale(); if (!currentLocale.equalsIgnoreCase(systemLocale)) { - setLanguage(mLanguage.getIdForValue(systemLocale), true); + setLanguage(mBinding.languageRadio.getIdForValue(systemLocale), true); return true; } else { - setLanguage(mLanguage.getIdForValue(systemLocale), false); + setLanguage(mBinding.languageRadio.getIdForValue(systemLocale), false); return false; } } private RadioGroupSetting.OnCheckedChangeListener mLanguageListener = (radioGroup, checkedId, doApply) -> { String currentLocale = LocaleUtils.getCurrentLocale(); - String locale = mLanguage.getValueForId(mLanguage.getCheckedRadioButtonId()).toString(); + String locale = mBinding.languageRadio.getValueForId(mBinding.languageRadio.getCheckedRadioButtonId()).toString(); if (!locale.equalsIgnoreCase(currentLocale)) setLanguage(checkedId, true); @@ -74,12 +80,12 @@ protected boolean reset() { }; private void setLanguage(int checkedId, boolean doApply) { - mLanguage.setOnCheckedChangeListener(null); - mLanguage.setChecked(checkedId, doApply); - mLanguage.setOnCheckedChangeListener(mLanguageListener); + mBinding.languageRadio.setOnCheckedChangeListener(null); + mBinding.languageRadio.setChecked(checkedId, doApply); + mBinding.languageRadio.setOnCheckedChangeListener(mLanguageListener); if (doApply) { - String language = mLanguage.getValueForId(checkedId).toString(); + String language = mBinding.languageRadio.getValueForId(checkedId).toString(); LocaleUtils.setDisplayLocale(getContext(), language); if (mDelegate != null) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayOptionsView.java index b59d4e293..fd2087a5d 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayOptionsView.java @@ -7,37 +7,24 @@ import android.content.Context; import android.graphics.Point; +import android.view.LayoutInflater; import android.view.View; +import androidx.databinding.DataBindingUtil; + import org.mozilla.vrbrowser.R; -import org.mozilla.vrbrowser.audio.AudioEngine; import org.mozilla.vrbrowser.browser.SettingsStore; import org.mozilla.vrbrowser.browser.engine.SessionStore; -import org.mozilla.vrbrowser.ui.views.UIButton; -import org.mozilla.vrbrowser.ui.views.settings.ButtonSetting; -import org.mozilla.vrbrowser.ui.views.settings.DoubleEditSetting; +import org.mozilla.vrbrowser.databinding.OptionsDisplayBinding; import org.mozilla.vrbrowser.ui.views.settings.RadioGroupSetting; -import org.mozilla.vrbrowser.ui.views.settings.SingleEditSetting; import org.mozilla.vrbrowser.ui.views.settings.SwitchSetting; import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate; import org.mozilla.vrbrowser.ui.widgets.WidgetPlacement; import org.mozilla.vrbrowser.utils.DeviceType; class DisplayOptionsView extends SettingsView { - private AudioEngine mAudio; - private UIButton mBackButton; - private SwitchSetting mCurvedDisplaySwitch; - private RadioGroupSetting mUaModeRadio; - private RadioGroupSetting mMSAARadio; - private SwitchSetting mAutoplaySetting; - private SingleEditSetting mHomepageEdit; - private RadioGroupSetting mFoveatedAppRadio; - private RadioGroupSetting mFoveatedWebVRRadio; - private SingleEditSetting mDensityEdit; - private SingleEditSetting mDpiEdit; - private DoubleEditSetting mWindowSizeEdit; - private DoubleEditSetting mMaxWindowSizeEdit; - private ButtonSetting mResetButton; + + private OptionsDisplayBinding mBinding; private String mDefaultHomepageUrl; public DisplayOptionsView(Context aContext, WidgetManagerDelegate aWidgetManager) { @@ -46,101 +33,90 @@ public DisplayOptionsView(Context aContext, WidgetManagerDelegate aWidgetManager } private void initialize(Context aContext) { - inflate(aContext, R.layout.options_display, this); + LayoutInflater inflater = LayoutInflater.from(aContext); + + // Inflate this data binding layout + mBinding = DataBindingUtil.inflate(inflater, R.layout.options_display, this, true); - mAudio = AudioEngine.fromContext(aContext); + mScrollbar = mBinding.scrollbar; - mBackButton = findViewById(R.id.backButton); - mBackButton.setOnClickListener(view -> { - onDismiss(); - }); + // Header + mBinding.headerLayout.setBackClickListener(view -> onDismiss()); - mCurvedDisplaySwitch = findViewById(R.id.curved_display_switch); - mCurvedDisplaySwitch.setOnCheckedChangeListener(mCurvedDisplayListener); + // Footer + mBinding.footerLayout.setResetClickListener(mResetListener); + + // Options + mBinding.curvedDisplaySwitch.setOnCheckedChangeListener(mCurvedDisplayListener); setCurvedDisplay(SettingsStore.getInstance(getContext()).getCylinderDensity() > 0.0f, false); int uaMode = SettingsStore.getInstance(getContext()).getUaMode(); - mUaModeRadio = findViewById(R.id.ua_radio); - mUaModeRadio.setOnCheckedChangeListener(mUaModeListener); - setUaMode(mUaModeRadio.getIdForValue(uaMode), false); + mBinding.uaRadio.setOnCheckedChangeListener(mUaModeListener); + setUaMode(mBinding.uaRadio.getIdForValue(uaMode), false); int msaaLevel = SettingsStore.getInstance(getContext()).getMSAALevel(); - mMSAARadio = findViewById(R.id.msaa_radio); - mMSAARadio.setOnCheckedChangeListener(mMSSAChangeListener); - setMSAAMode(mMSAARadio.getIdForValue(msaaLevel), false); + mBinding.msaaRadio.setOnCheckedChangeListener(mMSSAChangeListener); + setMSAAMode(mBinding.msaaRadio.getIdForValue(msaaLevel), false); - mAutoplaySetting = findViewById(R.id.autoplaySwitch); - mAutoplaySetting.setOnCheckedChangeListener(mAutoplayListener); + mBinding.autoplaySwitch.setOnCheckedChangeListener(mAutoplayListener); setAutoplay(SessionStore.get().getAutoplayEnabled(), false); mDefaultHomepageUrl = getContext().getString(R.string.homepage_url); - mHomepageEdit = findViewById(R.id.homepage_edit); - mHomepageEdit.setHint1(getContext().getString(R.string.homepage_hint, getContext().getString(R.string.app_name))); - mHomepageEdit.setDefaultFirstValue(mDefaultHomepageUrl); - mHomepageEdit.setFirstText(SettingsStore.getInstance(getContext()).getHomepage()); - mHomepageEdit.setOnClickListener(mHomepageListener); + mBinding.homepageEdit.setHint1(getContext().getString(R.string.homepage_hint, getContext().getString(R.string.app_name))); + mBinding.homepageEdit.setDefaultFirstValue(mDefaultHomepageUrl); + mBinding.homepageEdit.setFirstText(SettingsStore.getInstance(getContext()).getHomepage()); + mBinding.homepageEdit.setOnClickListener(mHomepageListener); setHomepage(SettingsStore.getInstance(getContext()).getHomepage()); - mFoveatedAppRadio = findViewById(R.id.foveated_app_radio); - mFoveatedWebVRRadio = findViewById(R.id.foveated_webvr_radio); if (DeviceType.isOculusBuild() || DeviceType.isWaveBuild()) { - mFoveatedAppRadio.setVisibility(View.VISIBLE); + mBinding.foveatedAppRadio.setVisibility(View.VISIBLE); // Uncomment this when Foveated Rendering for WebVR makes more sense // mFoveatedWebVRRadio.setVisibility(View.VISIBLE); int level = SettingsStore.getInstance(getContext()).getFoveatedLevelApp(); - setFoveatedLevel(mFoveatedAppRadio, mFoveatedAppRadio.getIdForValue(level), false); - mFoveatedAppRadio.setOnCheckedChangeListener((compoundButton, checkedId, apply) -> setFoveatedLevel(mFoveatedAppRadio, checkedId, apply)); + setFoveatedLevel(mBinding.foveatedAppRadio, mBinding.foveatedAppRadio.getIdForValue(level), false); + mBinding.foveatedAppRadio.setOnCheckedChangeListener((compoundButton, checkedId, apply) -> setFoveatedLevel(mBinding.foveatedAppRadio, checkedId, apply)); level = SettingsStore.getInstance(getContext()).getFoveatedLevelWebVR(); - setFoveatedLevel(mFoveatedWebVRRadio, mFoveatedWebVRRadio.getIdForValue(level), false); - mFoveatedWebVRRadio.setOnCheckedChangeListener((compoundButton, checkedId, apply) -> setFoveatedLevel(mFoveatedWebVRRadio, checkedId, apply)); + setFoveatedLevel(mBinding.foveatedWebvrRadio, mBinding.foveatedWebvrRadio.getIdForValue(level), false); + mBinding.foveatedWebvrRadio.setOnCheckedChangeListener((compoundButton, checkedId, apply) -> setFoveatedLevel(mBinding.foveatedWebvrRadio, checkedId, apply)); } - mDensityEdit = findViewById(R.id.density_edit); - mDensityEdit.setHint1(String.valueOf(SettingsStore.DISPLAY_DENSITY_DEFAULT)); - mDensityEdit.setDefaultFirstValue(String.valueOf(SettingsStore.DISPLAY_DENSITY_DEFAULT)); - mDensityEdit.setFirstText(Float.toString(SettingsStore.getInstance(getContext()).getDisplayDensity())); - mDensityEdit.setOnClickListener(mDensityListener); + mBinding.densityEdit.setHint1(String.valueOf(SettingsStore.DISPLAY_DENSITY_DEFAULT)); + mBinding.densityEdit.setDefaultFirstValue(String.valueOf(SettingsStore.DISPLAY_DENSITY_DEFAULT)); + mBinding.densityEdit.setFirstText(Float.toString(SettingsStore.getInstance(getContext()).getDisplayDensity())); + mBinding.densityEdit.setOnClickListener(mDensityListener); setDisplayDensity(SettingsStore.getInstance(getContext()).getDisplayDensity()); - mDpiEdit = findViewById(R.id.dpi_edit); - mDpiEdit.setHint1(String.valueOf(SettingsStore.DISPLAY_DPI_DEFAULT)); - mDpiEdit.setDefaultFirstValue(String.valueOf(SettingsStore.DISPLAY_DPI_DEFAULT)); - mDpiEdit.setFirstText(Integer.toString(SettingsStore.getInstance(getContext()).getDisplayDpi())); - mDpiEdit.setOnClickListener(mDpiListener); + mBinding.dpiEdit.setHint1(String.valueOf(SettingsStore.DISPLAY_DPI_DEFAULT)); + mBinding.dpiEdit.setDefaultFirstValue(String.valueOf(SettingsStore.DISPLAY_DPI_DEFAULT)); + mBinding.dpiEdit.setFirstText(Integer.toString(SettingsStore.getInstance(getContext()).getDisplayDpi())); + mBinding.dpiEdit.setOnClickListener(mDpiListener); setDisplayDpi(SettingsStore.getInstance(getContext()).getDisplayDpi()); - mWindowSizeEdit = findViewById(R.id.windowSize_edit); - mWindowSizeEdit.setHint1(String.valueOf(SettingsStore.WINDOW_WIDTH_DEFAULT)); - mWindowSizeEdit.setHint2(String.valueOf(SettingsStore.WINDOW_HEIGHT_DEFAULT)); - mWindowSizeEdit.setDefaultFirstValue(String.valueOf(SettingsStore.WINDOW_WIDTH_DEFAULT)); - mWindowSizeEdit.setDefaultSecondValue(String.valueOf(SettingsStore.WINDOW_HEIGHT_DEFAULT)); - mWindowSizeEdit.setFirstText(Integer.toString(SettingsStore.getInstance(getContext()).getWindowWidth())); - mWindowSizeEdit.setSecondText(Integer.toString(SettingsStore.getInstance(getContext()).getWindowHeight())); - mWindowSizeEdit.setOnClickListener(mWindowSizeListener); + mBinding.windowSizeEdit.setHint1(String.valueOf(SettingsStore.WINDOW_WIDTH_DEFAULT)); + mBinding.windowSizeEdit.setHint2(String.valueOf(SettingsStore.WINDOW_HEIGHT_DEFAULT)); + mBinding.windowSizeEdit.setDefaultFirstValue(String.valueOf(SettingsStore.WINDOW_WIDTH_DEFAULT)); + mBinding.windowSizeEdit.setDefaultSecondValue(String.valueOf(SettingsStore.WINDOW_HEIGHT_DEFAULT)); + mBinding.windowSizeEdit.setFirstText(Integer.toString(SettingsStore.getInstance(getContext()).getWindowWidth())); + mBinding.windowSizeEdit.setSecondText(Integer.toString(SettingsStore.getInstance(getContext()).getWindowHeight())); + mBinding.windowSizeEdit.setOnClickListener(mWindowSizeListener); setWindowSize( SettingsStore.getInstance(getContext()).getWindowWidth(), SettingsStore.getInstance(getContext()).getWindowHeight(), false); - mMaxWindowSizeEdit = findViewById(R.id.maxWindowSize_edit); - mMaxWindowSizeEdit.setHint1(String.valueOf(SettingsStore.MAX_WINDOW_WIDTH_DEFAULT)); - mMaxWindowSizeEdit.setHint2(String.valueOf(SettingsStore.MAX_WINDOW_HEIGHT_DEFAULT)); - mMaxWindowSizeEdit.setDefaultFirstValue(String.valueOf(SettingsStore.MAX_WINDOW_WIDTH_DEFAULT)); - mMaxWindowSizeEdit.setDefaultSecondValue(String.valueOf(SettingsStore.MAX_WINDOW_HEIGHT_DEFAULT)); - mMaxWindowSizeEdit.setFirstText(Integer.toString(SettingsStore.getInstance(getContext()).getMaxWindowWidth())); - mMaxWindowSizeEdit.setSecondText(Integer.toString(SettingsStore.getInstance(getContext()).getMaxWindowHeight())); - mMaxWindowSizeEdit.setOnClickListener(mMaxWindowSizeListener); + mBinding.maxWindowSizeEdit.setHint1(String.valueOf(SettingsStore.MAX_WINDOW_WIDTH_DEFAULT)); + mBinding.maxWindowSizeEdit.setHint2(String.valueOf(SettingsStore.MAX_WINDOW_HEIGHT_DEFAULT)); + mBinding.maxWindowSizeEdit.setDefaultFirstValue(String.valueOf(SettingsStore.MAX_WINDOW_WIDTH_DEFAULT)); + mBinding.maxWindowSizeEdit.setDefaultSecondValue(String.valueOf(SettingsStore.MAX_WINDOW_HEIGHT_DEFAULT)); + mBinding.maxWindowSizeEdit.setFirstText(Integer.toString(SettingsStore.getInstance(getContext()).getMaxWindowWidth())); + mBinding.maxWindowSizeEdit.setSecondText(Integer.toString(SettingsStore.getInstance(getContext()).getMaxWindowHeight())); + mBinding.maxWindowSizeEdit.setOnClickListener(mMaxWindowSizeListener); setMaxWindowSize( SettingsStore.getInstance(getContext()).getMaxWindowWidth(), SettingsStore.getInstance(getContext()).getMaxWindowHeight(), false); - - mResetButton = findViewById(R.id.resetButton); - mResetButton.setOnClickListener(mResetListener); - - mScrollbar = findViewById(R.id.scrollbar); } @Override @@ -161,29 +137,29 @@ protected void onDismiss() { public boolean isEditing() { boolean editing = false; - if (mDensityEdit.isEditing()) { + if (mBinding.densityEdit.isEditing()) { editing = true; - mDensityEdit.cancel(); + mBinding.densityEdit.cancel(); } - if (mDpiEdit.isEditing()) { + if (mBinding.dpiEdit.isEditing()) { editing = true; - mDpiEdit.cancel(); + mBinding.dpiEdit.cancel(); } - if (mWindowSizeEdit.isEditing()) { + if (mBinding.windowSizeEdit.isEditing()) { editing = true; - mWindowSizeEdit.cancel(); + mBinding.windowSizeEdit.cancel(); } - if (mMaxWindowSizeEdit.isEditing()) { + if (mBinding.maxWindowSizeEdit.isEditing()) { editing = true; - mMaxWindowSizeEdit.cancel(); + mBinding.maxWindowSizeEdit.cancel(); } - if (mHomepageEdit.isEditing()) { + if (mBinding.homepageEdit.isEditing()) { editing = true; - mHomepageEdit.cancel(); + mBinding.homepageEdit.cancel(); } return editing; @@ -202,8 +178,8 @@ public boolean isEditing() { }; private OnClickListener mHomepageListener = (view) -> { - if (!mHomepageEdit.getFirstText().isEmpty()) { - setHomepage(mHomepageEdit.getFirstText()); + if (!mBinding.homepageEdit.getFirstText().isEmpty()) { + setHomepage(mBinding.homepageEdit.getFirstText()); } else { setHomepage(mDefaultHomepageUrl); @@ -212,7 +188,7 @@ public boolean isEditing() { private OnClickListener mDensityListener = (view) -> { try { - float newDensity = Float.parseFloat(mDensityEdit.getFirstText()); + float newDensity = Float.parseFloat(mBinding.densityEdit.getFirstText()); if (setDisplayDensity(newDensity)) { showRestartDialog(); } @@ -226,7 +202,7 @@ public boolean isEditing() { private OnClickListener mDpiListener = (view) -> { try { - int newDpi = Integer.parseInt(mDpiEdit.getFirstText()); + int newDpi = Integer.parseInt(mBinding.dpiEdit.getFirstText()); if (setDisplayDpi(newDpi)) { showRestartDialog(); } @@ -240,8 +216,8 @@ public boolean isEditing() { private OnClickListener mWindowSizeListener = (view) -> { try { - int newWindowWidth = Integer.parseInt(mWindowSizeEdit.getFirstText()); - int newWindowHeight = Integer.parseInt(mWindowSizeEdit.getSecondText()); + int newWindowWidth = Integer.parseInt(mBinding.windowSizeEdit.getFirstText()); + int newWindowHeight = Integer.parseInt(mBinding.windowSizeEdit.getSecondText()); setWindowSize(newWindowWidth, newWindowHeight, true); } catch (NumberFormatException e) { @@ -251,8 +227,8 @@ public boolean isEditing() { private OnClickListener mMaxWindowSizeListener = (view) -> { try { - int newMaxWindowWidth = Integer.parseInt(mMaxWindowSizeEdit.getFirstText()); - int newMaxWindowHeight = Integer.parseInt(mMaxWindowSizeEdit.getSecondText()); + int newMaxWindowWidth = Integer.parseInt(mBinding.maxWindowSizeEdit.getFirstText()); + int newMaxWindowHeight = Integer.parseInt(mBinding.maxWindowSizeEdit.getSecondText()); setMaxWindowSize(newMaxWindowWidth, newMaxWindowHeight, true); } catch (NumberFormatException e) { @@ -266,18 +242,18 @@ public boolean isEditing() { private OnClickListener mResetListener = (view) -> { boolean restart = false; - if (!mUaModeRadio.getValueForId(mUaModeRadio.getCheckedRadioButtonId()).equals(SettingsStore.UA_MODE_DEFAULT)) { - setUaMode(mUaModeRadio.getIdForValue(SettingsStore.UA_MODE_DEFAULT), true); + if (!mBinding.uaRadio.getValueForId(mBinding.uaRadio.getCheckedRadioButtonId()).equals(SettingsStore.UA_MODE_DEFAULT)) { + setUaMode(mBinding.uaRadio.getIdForValue(SettingsStore.UA_MODE_DEFAULT), true); } - if (!mMSAARadio.getValueForId(mMSAARadio.getCheckedRadioButtonId()).equals(SettingsStore.MSAA_DEFAULT_LEVEL)) { - setMSAAMode(mMSAARadio.getIdForValue(SettingsStore.MSAA_DEFAULT_LEVEL), true); + if (!mBinding.msaaRadio.getValueForId(mBinding.msaaRadio.getCheckedRadioButtonId()).equals(SettingsStore.MSAA_DEFAULT_LEVEL)) { + setMSAAMode(mBinding.msaaRadio.getIdForValue(SettingsStore.MSAA_DEFAULT_LEVEL), true); } if (DeviceType.isOculusBuild() || DeviceType.isWaveBuild()) { - if (!mFoveatedAppRadio.getValueForId(mFoveatedAppRadio.getCheckedRadioButtonId()).equals(SettingsStore.FOVEATED_APP_DEFAULT_LEVEL)) { - setFoveatedLevel(mFoveatedAppRadio, mFoveatedAppRadio.getIdForValue(SettingsStore.FOVEATED_APP_DEFAULT_LEVEL), true); + if (!mBinding.foveatedAppRadio.getValueForId(mBinding.foveatedAppRadio.getCheckedRadioButtonId()).equals(SettingsStore.FOVEATED_APP_DEFAULT_LEVEL)) { + setFoveatedLevel(mBinding.foveatedAppRadio, mBinding.foveatedAppRadio.getIdForValue(SettingsStore.FOVEATED_APP_DEFAULT_LEVEL), true); } - if (!mFoveatedWebVRRadio.getValueForId(mFoveatedWebVRRadio.getCheckedRadioButtonId()).equals(SettingsStore.FOVEATED_WEBVR_DEFAULT_LEVEL)) { - setFoveatedLevel(mFoveatedWebVRRadio, mFoveatedWebVRRadio.getIdForValue(SettingsStore.FOVEATED_WEBVR_DEFAULT_LEVEL), true); + if (!mBinding.foveatedWebvrRadio.getValueForId(mBinding.foveatedWebvrRadio.getCheckedRadioButtonId()).equals(SettingsStore.FOVEATED_WEBVR_DEFAULT_LEVEL)) { + setFoveatedLevel(mBinding.foveatedWebvrRadio, mBinding.foveatedWebvrRadio.getIdForValue(SettingsStore.FOVEATED_WEBVR_DEFAULT_LEVEL), true); } } @@ -285,12 +261,12 @@ public boolean isEditing() { restart = restart | setDisplayDpi(SettingsStore.DISPLAY_DPI_DEFAULT); try { - if (Integer.parseInt(mWindowSizeEdit.getFirstText()) != SettingsStore.WINDOW_WIDTH_DEFAULT || - Integer.parseInt(mWindowSizeEdit.getSecondText()) != SettingsStore.WINDOW_HEIGHT_DEFAULT) { + if (Integer.parseInt(mBinding.windowSizeEdit.getFirstText()) != SettingsStore.WINDOW_WIDTH_DEFAULT || + Integer.parseInt(mBinding.windowSizeEdit.getSecondText()) != SettingsStore.WINDOW_HEIGHT_DEFAULT) { setWindowSize(SettingsStore.WINDOW_WIDTH_DEFAULT, SettingsStore.WINDOW_HEIGHT_DEFAULT, true); } - if (Integer.parseInt(mMaxWindowSizeEdit.getFirstText()) != SettingsStore.MAX_WINDOW_WIDTH_DEFAULT || - Integer.parseInt(mMaxWindowSizeEdit.getSecondText()) != SettingsStore.MAX_WINDOW_HEIGHT_DEFAULT) { + if (Integer.parseInt(mBinding.maxWindowSizeEdit.getFirstText()) != SettingsStore.MAX_WINDOW_WIDTH_DEFAULT || + Integer.parseInt(mBinding.maxWindowSizeEdit.getSecondText()) != SettingsStore.MAX_WINDOW_HEIGHT_DEFAULT) { setMaxWindowSize(SettingsStore.MAX_WINDOW_WIDTH_DEFAULT, SettingsStore.MAX_WINDOW_HEIGHT_DEFAULT, true); } } catch (NumberFormatException ex) { @@ -307,9 +283,9 @@ public boolean isEditing() { }; private void setCurvedDisplay(boolean value, boolean doApply) { - mCurvedDisplaySwitch.setOnCheckedChangeListener(null); - mCurvedDisplaySwitch.setValue(value, false); - mCurvedDisplaySwitch.setOnCheckedChangeListener(mCurvedDisplayListener); + mBinding.curvedDisplaySwitch.setOnCheckedChangeListener(null); + mBinding.curvedDisplaySwitch.setValue(value, false); + mBinding.curvedDisplaySwitch.setOnCheckedChangeListener(mCurvedDisplayListener); if (doApply) { float density = value ? SettingsStore.CYLINDER_DENSITY_ENABLED_DEFAULT : 0.0f; @@ -319,9 +295,9 @@ private void setCurvedDisplay(boolean value, boolean doApply) { } private void setAutoplay(boolean value, boolean doApply) { - mAutoplaySetting.setOnCheckedChangeListener(null); - mAutoplaySetting.setValue(value, false); - mAutoplaySetting.setOnCheckedChangeListener(mAutoplayListener); + mBinding.autoplaySwitch.setOnCheckedChangeListener(null); + mBinding.autoplaySwitch.setValue(value, false); + mBinding.autoplaySwitch.setOnCheckedChangeListener(mAutoplayListener); if (doApply) { SessionStore.get().setAutoplayEnabled(value); @@ -329,31 +305,31 @@ private void setAutoplay(boolean value, boolean doApply) { } private void setHomepage(String newHomepage) { - mHomepageEdit.setOnClickListener(null); - mHomepageEdit.setFirstText(newHomepage); + mBinding.homepageEdit.setOnClickListener(null); + mBinding.homepageEdit.setFirstText(newHomepage); SettingsStore.getInstance(getContext()).setHomepage(newHomepage); - mHomepageEdit.setOnClickListener(mHomepageListener); + mBinding.homepageEdit.setOnClickListener(mHomepageListener); } private void setUaMode(int checkId, boolean doApply) { - mUaModeRadio.setOnCheckedChangeListener(null); - mUaModeRadio.setChecked(checkId, doApply); - mUaModeRadio.setOnCheckedChangeListener(mUaModeListener); + mBinding.uaRadio.setOnCheckedChangeListener(null); + mBinding.uaRadio.setChecked(checkId, doApply); + mBinding.uaRadio.setOnCheckedChangeListener(mUaModeListener); SettingsStore.getInstance(getContext()).setUaMode(checkId); if (doApply) { - SessionStore.get().setUaMode((Integer)mUaModeRadio.getValueForId(checkId)); + SessionStore.get().setUaMode((Integer)mBinding.uaRadio.getValueForId(checkId)); } } private void setMSAAMode(int checkedId, boolean doApply) { - mMSAARadio.setOnCheckedChangeListener(null); - mMSAARadio.setChecked(checkedId, doApply); - mMSAARadio.setOnCheckedChangeListener(mMSSAChangeListener); + mBinding.msaaRadio.setOnCheckedChangeListener(null); + mBinding.msaaRadio.setChecked(checkedId, doApply); + mBinding.msaaRadio.setOnCheckedChangeListener(mMSSAChangeListener); if (doApply) { - SettingsStore.getInstance(getContext()).setMSAALevel((Integer)mMSAARadio.getValueForId(checkedId)); + SettingsStore.getInstance(getContext()).setMSAALevel((Integer)mBinding.msaaRadio.getValueForId(checkedId)); showRestartDialog(); } } @@ -366,7 +342,7 @@ private void setFoveatedLevel(RadioGroupSetting aSetting, int checkedId, boolean int level = (Integer)aSetting.getValueForId(checkedId); - if (aSetting == mFoveatedAppRadio) { + if (aSetting == mBinding.foveatedAppRadio) { SettingsStore.getInstance(getContext()).setFoveatedLevelApp(level); } else { SettingsStore.getInstance(getContext()).setFoveatedLevelWebVR(level); @@ -382,7 +358,7 @@ private void setFoveatedLevel(RadioGroupSetting aSetting, int checkedId, boolean } private boolean setDisplayDensity(float newDensity) { - mDensityEdit.setOnClickListener(null); + mBinding.densityEdit.setOnClickListener(null); boolean restart = false; float prevDensity = SettingsStore.getInstance(getContext()).getDisplayDensity(); if (newDensity <= 0) { @@ -392,14 +368,14 @@ private boolean setDisplayDensity(float newDensity) { SettingsStore.getInstance(getContext()).setDisplayDensity(newDensity); restart = true; } - mDensityEdit.setFirstText(Float.toString(newDensity)); - mDensityEdit.setOnClickListener(mDensityListener); + mBinding.densityEdit.setFirstText(Float.toString(newDensity)); + mBinding.densityEdit.setOnClickListener(mDensityListener); return restart; } private boolean setDisplayDpi(int newDpi) { - mDpiEdit.setOnClickListener(null); + mBinding.dpiEdit.setOnClickListener(null); boolean restart = false; int prevDensity = SettingsStore.getInstance(getContext()).getDisplayDpi(); if (newDpi <= 0) { @@ -409,8 +385,8 @@ private boolean setDisplayDpi(int newDpi) { SettingsStore.getInstance(getContext()).setDisplayDpi(newDpi); restart = true; } - mDpiEdit.setFirstText(Integer.toString(newDpi)); - mDpiEdit.setOnClickListener(mDpiListener); + mBinding.dpiEdit.setFirstText(Integer.toString(newDpi)); + mBinding.dpiEdit.setOnClickListener(mDpiListener); return restart; } @@ -446,9 +422,9 @@ private void setWindowSize(int newWindowWidth, int newWindowHeight, boolean doAp } String newWindowWidthStr = Integer.toString(newWindowWidth); - mWindowSizeEdit.setFirstText(newWindowWidthStr); + mBinding.windowSizeEdit.setFirstText(newWindowWidthStr); String newWindowHeightStr = Integer.toString(newWindowHeight); - mWindowSizeEdit.setSecondText(newWindowHeightStr); + mBinding.windowSizeEdit.setSecondText(newWindowHeightStr); } private void setMaxWindowSize(int newMaxWindowWidth, int newMaxWindowHeight, boolean doApply) { @@ -485,32 +461,32 @@ private void setMaxWindowSize(int newMaxWindowWidth, int newMaxWindowHeight, boo } String newMaxWindowWidthStr = Integer.toString(newMaxWindowWidth); - mMaxWindowSizeEdit.setFirstText(newMaxWindowWidthStr); + mBinding.maxWindowSizeEdit.setFirstText(newMaxWindowWidthStr); String newMaxWindowHeightStr = Integer.toString(newMaxWindowHeight); - mMaxWindowSizeEdit.setSecondText(newMaxWindowHeightStr); + mBinding.maxWindowSizeEdit.setSecondText(newMaxWindowHeightStr); } @Override public void onGlobalFocusChanged(View oldFocus, View newFocus) { if (oldFocus != null) { - if (mDensityEdit.contains(oldFocus) && mDensityEdit.isEditing()) { - mDensityEdit.cancel(); + if (mBinding.densityEdit.contains(oldFocus) && mBinding.densityEdit.isEditing()) { + mBinding.densityEdit.cancel(); } - if (mDpiEdit.contains(oldFocus) && mDpiEdit.isEditing()) { - mDpiEdit.cancel(); + if (mBinding.dpiEdit.contains(oldFocus) && mBinding.dpiEdit.isEditing()) { + mBinding.dpiEdit.cancel(); } - if (mWindowSizeEdit.contains(oldFocus) && - (newFocus != null && !mWindowSizeEdit.contains(newFocus)) && - mWindowSizeEdit.isEditing()) { - mWindowSizeEdit.cancel(); + if (mBinding.windowSizeEdit.contains(oldFocus) && + (newFocus != null && !mBinding.windowSizeEdit.contains(newFocus)) && + mBinding.windowSizeEdit.isEditing()) { + mBinding.windowSizeEdit.cancel(); } - if (mMaxWindowSizeEdit.contains(oldFocus) && - (newFocus != null && !mMaxWindowSizeEdit.contains(newFocus)) && - mMaxWindowSizeEdit.isEditing()) { - mMaxWindowSizeEdit.cancel(); + if (mBinding.maxWindowSizeEdit.contains(oldFocus) && + (newFocus != null && !mBinding.maxWindowSizeEdit.contains(newFocus)) && + mBinding.maxWindowSizeEdit.isEditing()) { + mBinding.maxWindowSizeEdit.cancel(); } - if (mHomepageEdit.contains(oldFocus) && mHomepageEdit.isEditing()) { - mHomepageEdit.cancel(); + if (mBinding.homepageEdit.contains(oldFocus) && mBinding.homepageEdit.isEditing()) { + mBinding.homepageEdit.cancel(); } } } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/EnvironmentOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/EnvironmentOptionsView.java index 60b2d5000..eb012f780 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/EnvironmentOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/EnvironmentOptionsView.java @@ -6,23 +6,22 @@ package org.mozilla.vrbrowser.ui.widgets.settings; import android.content.Context; +import android.view.LayoutInflater; + +import androidx.databinding.DataBindingUtil; import org.mozilla.vrbrowser.R; -import org.mozilla.vrbrowser.audio.AudioEngine; import org.mozilla.vrbrowser.browser.SettingsStore; import org.mozilla.vrbrowser.browser.engine.SessionStore; -import org.mozilla.vrbrowser.ui.views.UIButton; -import org.mozilla.vrbrowser.ui.views.settings.ButtonSetting; +import org.mozilla.vrbrowser.databinding.OptionsEnvironmentBinding; import org.mozilla.vrbrowser.ui.views.settings.ImageRadioGroupSetting; import org.mozilla.vrbrowser.ui.views.settings.SwitchSetting; import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate; class EnvironmentOptionsView extends SettingsView { - private AudioEngine mAudio; - private UIButton mBackButton; - private SwitchSetting mEnvOverrideSwitch; + + private OptionsEnvironmentBinding mBinding; private ImageRadioGroupSetting mEnvironmentsRadio; - private ButtonSetting mResetButton; public EnvironmentOptionsView(Context aContext, WidgetManagerDelegate aWidgetManager) { super(aContext, aWidgetManager); @@ -30,39 +29,30 @@ public EnvironmentOptionsView(Context aContext, WidgetManagerDelegate aWidgetMan } private void initialize(Context aContext) { - inflate(aContext, R.layout.options_environment, this); + LayoutInflater inflater = LayoutInflater.from(aContext); - mAudio = AudioEngine.fromContext(aContext); + // Inflate this data binding layout + mBinding = DataBindingUtil.inflate(inflater, R.layout.options_environment, this, true); - mBackButton = findViewById(R.id.backButton); - mBackButton.setOnClickListener(view -> { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } + mScrollbar = mBinding.scrollbar; - onDismiss(); - }); + // Header + mBinding.headerLayout.setBackClickListener(view -> onDismiss()); + + // Footer + mBinding.footerLayout.setResetClickListener(mResetListener); String env = SettingsStore.getInstance(getContext()).getEnvironment(); mEnvironmentsRadio = findViewById(R.id.environmentRadio); mEnvironmentsRadio.setOnCheckedChangeListener(mEnvsListener); setEnv(mEnvironmentsRadio.getIdForValue(env), false); - mEnvOverrideSwitch = findViewById(R.id.envOverrideSwitch); - mEnvOverrideSwitch.setOnCheckedChangeListener(mEnvOverrideListener); + mBinding.envOverrideSwitch.setOnCheckedChangeListener(mEnvOverrideListener); setEnvOverride(SettingsStore.getInstance(getContext()).isEnvironmentOverrideEnabled()); - mEnvOverrideSwitch.setHelpDelegate(() -> { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } + mBinding.envOverrideSwitch.setHelpDelegate(() -> { SessionStore.get().getActiveStore().loadUri(getContext().getString(R.string.environment_override_help_url)); exitWholeSettings(); }); - - mResetButton = findViewById(R.id.resetButton); - mResetButton.setOnClickListener(mResetListener); - - mScrollbar = findViewById(R.id.scrollbar); } @Override @@ -71,16 +61,16 @@ public void onHidden() { } private void setEnvOverride(boolean value) { - mEnvOverrideSwitch.setOnCheckedChangeListener(null); - mEnvOverrideSwitch.setValue(value, false); - mEnvOverrideSwitch.setOnCheckedChangeListener(mEnvOverrideListener); + mBinding.envOverrideSwitch.setOnCheckedChangeListener(null); + mBinding.envOverrideSwitch.setValue(value, false); + mBinding.envOverrideSwitch.setOnCheckedChangeListener(mEnvOverrideListener); SettingsStore.getInstance(getContext()).setEnvironmentOverrideEnabled(value); } private OnClickListener mResetListener = (view) -> { boolean restart = false; - if (mEnvOverrideSwitch.isChecked() != SettingsStore.ENV_OVERRIDE_DEFAULT) { + if (mBinding.envOverrideSwitch.isChecked() != SettingsStore.ENV_OVERRIDE_DEFAULT) { setEnvOverride(SettingsStore.ENV_OVERRIDE_DEFAULT); restart = true; } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/PrivacyOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/PrivacyOptionsView.java index 102c42d8b..d0c7a532b 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/PrivacyOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/PrivacyOptionsView.java @@ -12,16 +12,17 @@ import android.graphics.Point; import android.os.Bundle; import android.util.Pair; +import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; +import androidx.databinding.DataBindingUtil; + import org.mozilla.geckoview.GeckoSession; import org.mozilla.vrbrowser.R; -import org.mozilla.vrbrowser.audio.AudioEngine; import org.mozilla.vrbrowser.browser.SettingsStore; import org.mozilla.vrbrowser.browser.engine.SessionStore; -import org.mozilla.vrbrowser.ui.views.UIButton; -import org.mozilla.vrbrowser.ui.views.settings.ButtonSetting; +import org.mozilla.vrbrowser.databinding.OptionsPrivacyBinding; import org.mozilla.vrbrowser.ui.views.settings.SwitchSetting; import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate; import org.mozilla.vrbrowser.ui.widgets.WidgetPlacement; @@ -30,16 +31,9 @@ import java.util.ArrayList; class PrivacyOptionsView extends SettingsView { - private AudioEngine mAudio; - private UIButton mBackButton; - private SwitchSetting mDrmContentPlaybackSwitch; - private SwitchSetting mTrackingSetting; - private SwitchSetting mNotificationsPermissionSwitch; - private ButtonSetting mResetButton; + + private OptionsPrivacyBinding mBinding; private ArrayList> mPermissionButtons; - private SwitchSetting mSpeechDataSwitch; - private SwitchSetting mTelemetryDataSwitch; - private SwitchSetting mCrashreportsDataSwitch; public PrivacyOptionsView(Context aContext, WidgetManagerDelegate aWidgetManager) { super(aContext, aWidgetManager); @@ -47,44 +41,39 @@ public PrivacyOptionsView(Context aContext, WidgetManagerDelegate aWidgetManager } private void initialize(Context aContext) { - inflate(aContext, R.layout.options_privacy, this); - mAudio = AudioEngine.fromContext(aContext); + LayoutInflater inflater = LayoutInflater.from(aContext); - ((Application)aContext.getApplicationContext()).registerActivityLifecycleCallbacks(mLifeCycleListener); + // Inflate this data binding layout + mBinding = DataBindingUtil.inflate(inflater, R.layout.options_privacy, this, true); - mBackButton = findViewById(R.id.backButton); - mBackButton.setOnClickListener(view -> { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } - onDismiss(); - }); + mScrollbar = mBinding.scrollbar; - mScrollbar = findViewById(R.id.scrollbar); + // Header + mBinding.headerLayout.setBackClickListener(view -> onDismiss()); - ButtonSetting privacyPolicy = findViewById(R.id.showPrivacyButton); - privacyPolicy.setOnClickListener(v -> { - if (mAudio != null) { - mAudio.playSound(AudioEngine.Sound.CLICK); - } + // Footer + mBinding.footerLayout.setResetClickListener(v -> resetOptions()); + + ((Application)aContext.getApplicationContext()).registerActivityLifecycleCallbacks(mLifeCycleListener); + + // Options + mBinding.showPrivacyButton.setOnClickListener(v -> { SessionStore.get().getActiveStore().newSessionWithUrl(getContext().getString(R.string.private_policy_url)); exitWholeSettings(); }); - mDrmContentPlaybackSwitch = findViewById(R.id.drmContentPlaybackSwitch); - mDrmContentPlaybackSwitch.setChecked(SettingsStore.getInstance(getContext()).isDrmContentPlaybackEnabled()); - mDrmContentPlaybackSwitch.setOnCheckedChangeListener((compoundButton, enabled, apply) -> { + mBinding.drmContentPlaybackSwitch.setChecked(SettingsStore.getInstance(getContext()).isDrmContentPlaybackEnabled()); + mBinding.drmContentPlaybackSwitch.setOnCheckedChangeListener((compoundButton, enabled, apply) -> { SettingsStore.getInstance(getContext()).setDrmContentPlaybackEnabled(enabled); // TODO Enable/Disable DRM content playback }); - mDrmContentPlaybackSwitch.setLinkClickListener((widget, url) -> { + mBinding.drmContentPlaybackSwitch.setLinkClickListener((widget, url) -> { SessionStore.get().getActiveStore().loadUri(url); exitWholeSettings(); }); - mTrackingSetting = findViewById(R.id.trackingProtectionSwitch); - mTrackingSetting.setChecked(SettingsStore.getInstance(getContext()).isTrackingProtectionEnabled()); - mTrackingSetting.setOnCheckedChangeListener((compoundButton, enabled, apply) -> { + mBinding.trackingProtectionSwitch.setChecked(SettingsStore.getInstance(getContext()).isTrackingProtectionEnabled()); + mBinding.trackingProtectionSwitch.setOnCheckedChangeListener((compoundButton, enabled, apply) -> { SettingsStore.getInstance(getContext()).setTrackingProtectionEnabled(enabled); SessionStore.get().setTrackingProtection(enabled); }); @@ -108,29 +97,22 @@ private void initialize(Context aContext) { togglePermission(button.first, button.second)); } - mNotificationsPermissionSwitch = findViewById(R.id.notificationsPermissionSwitch); - mNotificationsPermissionSwitch.setChecked(SettingsStore.getInstance(getContext()).isNotificationsEnabled()); - mNotificationsPermissionSwitch.setOnCheckedChangeListener((compoundButton, enabled, apply) -> { + mBinding.notificationsPermissionSwitch.setChecked(SettingsStore.getInstance(getContext()).isNotificationsEnabled()); + mBinding.notificationsPermissionSwitch.setOnCheckedChangeListener((compoundButton, enabled, apply) -> { SettingsStore.getInstance(getContext()).setNotificationsEnabled(enabled); }); - mSpeechDataSwitch = findViewById(R.id.speechDataSwitch); - mSpeechDataSwitch.setChecked(SettingsStore.getInstance(getContext()).isSpeechDataCollectionEnabled()); - mSpeechDataSwitch.setOnCheckedChangeListener((compoundButton, enabled, apply) -> + mBinding.speechDataSwitch.setChecked(SettingsStore.getInstance(getContext()).isSpeechDataCollectionEnabled()); + mBinding.speechDataSwitch.setOnCheckedChangeListener((compoundButton, enabled, apply) -> SettingsStore.getInstance(getContext()).setSpeechDataCollectionEnabled(enabled)); - mTelemetryDataSwitch = findViewById(R.id.telemetryDataSwitch); - mTelemetryDataSwitch.setChecked(SettingsStore.getInstance(getContext()).isTelemetryEnabled()); - mTelemetryDataSwitch.setOnCheckedChangeListener((compoundButton, enabled, apply) -> + mBinding.telemetryDataSwitch.setChecked(SettingsStore.getInstance(getContext()).isTelemetryEnabled()); + mBinding.telemetryDataSwitch.setOnCheckedChangeListener((compoundButton, enabled, apply) -> SettingsStore.getInstance(getContext()).setTelemetryEnabled(enabled)); - mCrashreportsDataSwitch = findViewById(R.id.crashReportsDataSwitch); - mCrashreportsDataSwitch.setChecked(SettingsStore.getInstance(getContext()).isCrashReportingEnabled()); - mCrashreportsDataSwitch.setOnCheckedChangeListener((compoundButton, enabled, apply) -> + mBinding.crashReportsDataSwitch.setChecked(SettingsStore.getInstance(getContext()).isCrashReportingEnabled()); + mBinding.crashReportsDataSwitch.setOnCheckedChangeListener((compoundButton, enabled, apply) -> SettingsStore.getInstance(getContext()).setCrashReportingEnabled(enabled)); - - mResetButton = findViewById(R.id.resetButton); - mResetButton.setOnClickListener(v -> resetOptions()); } private void togglePermission(SwitchSetting aButton, String aPermission) { @@ -153,8 +135,8 @@ public void reject() { } private void resetOptions() { - if (mTrackingSetting.isChecked() != SettingsStore.TRACKING_DEFAULT) { - mTrackingSetting.setChecked(SettingsStore.TRACKING_DEFAULT); + if (mBinding.trackingProtectionSwitch.isChecked() != SettingsStore.TRACKING_DEFAULT) { + mBinding.trackingProtectionSwitch.setChecked(SettingsStore.TRACKING_DEFAULT); } } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/SettingsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/SettingsView.java index 955e0956e..60fa34c22 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/SettingsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/SettingsView.java @@ -9,7 +9,6 @@ import androidx.annotation.NonNull; import org.mozilla.vrbrowser.R; -import org.mozilla.vrbrowser.ui.widgets.UIWidget; import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate; import org.mozilla.vrbrowser.ui.widgets.WidgetPlacement; @@ -65,7 +64,7 @@ protected boolean isVisible() { public void onShown() { if (mScrollbar != null) - mScrollbar.scrollTo(0, 0); + mScrollbar.fullScroll(ScrollView.FOCUS_UP); setFocusableInTouchMode(true); requestFocusFromTouch(); @@ -79,7 +78,7 @@ public boolean isEditing() { return false; } - public void onGlobalFocusChanged(View oldFocus, View newFocus) {} + protected void onGlobalFocusChanged(View oldFocus, View newFocus) {} public Point getDimensions() { return new Point( WidgetPlacement.dpDimension(getContext(), R.dimen.developer_options_width), diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/VoiceSearchLanguageOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/VoiceSearchLanguageOptionsView.java index 1b068e97f..1b09e85ac 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/VoiceSearchLanguageOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/VoiceSearchLanguageOptionsView.java @@ -7,9 +7,13 @@ import android.content.Context; import android.graphics.Point; +import android.view.LayoutInflater; + +import androidx.databinding.DataBindingUtil; import org.mozilla.vrbrowser.R; import org.mozilla.vrbrowser.browser.engine.SessionStore; +import org.mozilla.vrbrowser.databinding.OptionsLanguageVoiceBinding; import org.mozilla.vrbrowser.ui.views.settings.RadioGroupSetting; import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate; import org.mozilla.vrbrowser.ui.widgets.WidgetPlacement; @@ -17,7 +21,7 @@ class VoiceSearchLanguageOptionsView extends SettingsView { - private RadioGroupSetting mLanguage; + private OptionsLanguageVoiceBinding mBinding; public VoiceSearchLanguageOptionsView(Context aContext, WidgetManagerDelegate aWidgetManager) { super(aContext, aWidgetManager); @@ -25,33 +29,35 @@ public VoiceSearchLanguageOptionsView(Context aContext, WidgetManagerDelegate aW } private void initialize(Context aContext) { - inflate(aContext, R.layout.options_language_voice, this); + LayoutInflater inflater = LayoutInflater.from(aContext); + + // Inflate this data binding layout + mBinding = DataBindingUtil.inflate(inflater, R.layout.options_language_voice, this, true); + + mScrollbar = mBinding.scrollbar; // Header - SettingsHeader header = findViewById(R.id.header_layout); - header.setBackClickListener(view -> { + mBinding.headerLayout.setBackClickListener(view -> { mDelegate.showView(new LanguageOptionsView(getContext(), mWidgetManager)); }); - header.setHelpClickListener(view -> { + mBinding.headerLayout.setHelpClickListener(view -> { SessionStore.get().getActiveStore().loadUri(getResources().getString(R.string.sumo_language_voice_url)); mDelegate.exitWholeSettings(); }); // Footer - SettingsFooter footer = findViewById(R.id.footer_layout); - footer.setResetClickListener(mResetListener); + mBinding.footerLayout.setResetClickListener(mResetListener); String language = LocaleUtils.getVoiceSearchLocale(getContext()); - mLanguage = findViewById(R.id.languageRadio); - mLanguage.setOnCheckedChangeListener(mLanguageListener); - setLanguage(mLanguage.getIdForValue(language), false); + mBinding.languageRadio.setOnCheckedChangeListener(mLanguageListener); + setLanguage(mBinding.languageRadio.getIdForValue(language), false); } @Override protected boolean reset() { - String value = mLanguage.getValueForId(mLanguage.getCheckedRadioButtonId()).toString(); + String value = mBinding.languageRadio.getValueForId(mBinding.languageRadio.getCheckedRadioButtonId()).toString(); if (!value.equals(LocaleUtils.getSystemLocale())) { - setLanguage(mLanguage.getIdForValue(LocaleUtils.getSystemLocale()), true); + setLanguage(mBinding.languageRadio.getIdForValue(LocaleUtils.getSystemLocale()), true); } return false; @@ -66,11 +72,11 @@ protected boolean reset() { }; private void setLanguage(int checkedId, boolean doApply) { - mLanguage.setOnCheckedChangeListener(null); - mLanguage.setChecked(checkedId, doApply); - mLanguage.setOnCheckedChangeListener(mLanguageListener); + mBinding.languageRadio.setOnCheckedChangeListener(null); + mBinding.languageRadio.setChecked(checkedId, doApply); + mBinding.languageRadio.setOnCheckedChangeListener(mLanguageListener); - LocaleUtils.setVoiceSearchLocale(getContext(), mLanguage.getValueForId(checkedId).toString()); + LocaleUtils.setVoiceSearchLocale(getContext(), mBinding.languageRadio.getValueForId(checkedId).toString()); } @Override diff --git a/app/src/main/res/layout/options_controller.xml b/app/src/main/res/layout/options_controller.xml index 9c589522a..e1ab45e65 100644 --- a/app/src/main/res/layout/options_controller.xml +++ b/app/src/main/res/layout/options_controller.xml @@ -1,10 +1,9 @@ - - - - - + android:layout_height="wrap_content" + app:helpVisibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:title="@string/settings_developer_options" /> + android:layout_height="0dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp" + app:layout_constraintBottom_toTopOf="@id/footer_layout" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/header_layout"> @@ -74,28 +68,21 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="50dp" - app:layout="@layout/setting_radio_group_v" app:description="@string/developer_options_scroll_direction" + app:layout="@layout/setting_radio_group_v" app:options="@array/developer_options_pointer_scroll_directions" app:values="@array/developer_options_pointer_scroll_direction_values" /> - - - - - + android:layout_height="60dp" + app:description="@string/controller_options_reset" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + diff --git a/app/src/main/res/layout/options_developer.xml b/app/src/main/res/layout/options_developer.xml index 29c57a57e..22c3b3ca4 100644 --- a/app/src/main/res/layout/options_developer.xml +++ b/app/src/main/res/layout/options_developer.xml @@ -1,9 +1,8 @@ - - - - - + android:layout_height="wrap_content" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:title="@string/settings_developer_options" + app:helpVisibility="gone" /> + android:layout_height="0dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp" + app:layout_constraintBottom_toTopOf="@id/footer_layout" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/header_layout"> - + android:layout_height="60dp" + app:description="@string/developer_options_reset" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> - - - + + diff --git a/app/src/main/res/layout/options_display.xml b/app/src/main/res/layout/options_display.xml index 7d873a9cc..133141c1c 100644 --- a/app/src/main/res/layout/options_display.xml +++ b/app/src/main/res/layout/options_display.xml @@ -1,9 +1,8 @@ - - - - - + android:layout_height="wrap_content" + app:helpVisibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:title="@string/settings_display" /> + android:layout_height="0dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp" + android:paddingEnd="30dp" + app:layout_constraintBottom_toTopOf="@id/footer_layout" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/header_layout"> + app:description="@string/developer_options_homepage" + app:highlightedTextColor="@color/fog" /> @@ -94,8 +89,8 @@ android:id="@+id/foveated_webvr_radio" android:layout_width="match_parent" android:layout_height="wrap_content" - app:description="@string/developer_options_foveated_webvr" android:visibility="gone" + app:description="@string/developer_options_foveated_webvr" app:options="@array/developer_options_foveated_options" app:values="@array/developer_options_foveated_values" /> @@ -103,60 +98,53 @@ android:id="@+id/density_edit" android:layout_width="match_parent" android:layout_height="wrap_content" - app:description="@string/developer_options_display_density" - app:highlightedTextColor="@color/fog" - android:maxLength="4" + android:width="75dp" android:inputType="numberDecimal" - android:width="75dp" /> + android:maxLength="4" + app:description="@string/developer_options_display_density" + app:highlightedTextColor="@color/fog" /> + android:maxLength="4" + app:description="@string/developer_options_display_dpi" + app:highlightedTextColor="@color/fog" /> + app:highlightedTextColor="@color/fog" /> + app:highlightedTextColor="@color/fog" /> - - - - - + android:layout_height="60dp" + app:description="@string/display_options_reset" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + diff --git a/app/src/main/res/layout/options_environment.xml b/app/src/main/res/layout/options_environment.xml index 5df4acfad..6a970b1a5 100644 --- a/app/src/main/res/layout/options_environment.xml +++ b/app/src/main/res/layout/options_environment.xml @@ -1,10 +1,8 @@ - + - - - - + android:layout_height="wrap_content" + app:helpVisibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:title="@string/developer_options_environments" /> + android:layout_height="0dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp" + android:paddingEnd="30dp" + app:layout_constraintBottom_toTopOf="@id/footer_layout" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/header_layout"> - - - - - + android:layout_height="60dp" + app:description="@string/display_options_reset" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + diff --git a/app/src/main/res/layout/options_language.xml b/app/src/main/res/layout/options_language.xml index 77b47b6c5..ba68162be 100644 --- a/app/src/main/res/layout/options_language.xml +++ b/app/src/main/res/layout/options_language.xml @@ -3,12 +3,15 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> + + + @@ -28,56 +31,64 @@ android:id="@+id/header_layout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginEnd="35dp" + app:helpVisibility="gone" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:title="@string/settings_language_settings" - app:helpVisibility="gone"/> + app:title="@string/settings_language_settings" /> - + android:layout_height="0dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp" + app:layout_constraintBottom_toTopOf="@id/footer_layout" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/header_layout"> - + - + + + + + + + + + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> diff --git a/app/src/main/res/layout/options_language_content.xml b/app/src/main/res/layout/options_language_content.xml index 16ffe00ed..641cce36f 100644 --- a/app/src/main/res/layout/options_language_content.xml +++ b/app/src/main/res/layout/options_language_content.xml @@ -1,8 +1,7 @@ + xmlns:tools="http://schemas.android.com/tools"> - + + app:title="@string/settings_language_choose_language_display_title" /> + app:layout_constraintTop_toBottomOf="@+id/header_layout"> + app:layout_constraintTop_toBottomOf="@+id/scrollbar" /> - + diff --git a/app/src/main/res/layout/options_language_voice.xml b/app/src/main/res/layout/options_language_voice.xml index b7fe8fa4e..77c22a112 100644 --- a/app/src/main/res/layout/options_language_voice.xml +++ b/app/src/main/res/layout/options_language_voice.xml @@ -1,8 +1,6 @@ - + + app:title="@string/settings_language_choose_language_voice_search_title" /> + app:layout_constraintTop_toBottomOf="@+id/header_layout"> + app:layout_constraintTop_toBottomOf="@+id/scrollbar" /> - + diff --git a/app/src/main/res/layout/options_privacy.xml b/app/src/main/res/layout/options_privacy.xml index d59dbdae4..2949fb7a8 100644 --- a/app/src/main/res/layout/options_privacy.xml +++ b/app/src/main/res/layout/options_privacy.xml @@ -1,9 +1,8 @@ - - - - - + android:layout_height="wrap_content" + app:helpVisibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:title="@string/settings_privacy_security" /> + android:layout_height="0dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp" + android:paddingEnd="30dp" + app:layout_constraintBottom_toTopOf="@id/footer_layout" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/header_layout"> - - - - - + android:layout_height="60dp" + app:description="@string/display_options_reset" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + diff --git a/app/src/main/res/layout/setting_button.xml b/app/src/main/res/layout/setting_button.xml index 74115993b..50efbb05d 100644 --- a/app/src/main/res/layout/setting_button.xml +++ b/app/src/main/res/layout/setting_button.xml @@ -26,6 +26,7 @@ style="@style/settingsButton" android:layout_alignParentEnd="true" android:layout_centerVertical="true" + android:focusable="true" tools:text="Button" /> diff --git a/app/src/main/res/layout/setting_switch.xml b/app/src/main/res/layout/setting_switch.xml index 57f21b239..75785f2b9 100644 --- a/app/src/main/res/layout/setting_switch.xml +++ b/app/src/main/res/layout/setting_switch.xml @@ -18,9 +18,10 @@ android:layout_alignParentStart="true" android:layout_centerVertical="true" android:layout_toStartOf="@id/switch_layout" - android:gravity="left|center"> + android:gravity="start"> @@ -37,12 +38,13 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:gravity="center" + android:gravity="start" android:orientation="horizontal"> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 722176f08..567600f54 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -171,7 +171,7 @@