Skip to content

Commit

Permalink
Unify settings content UI (#1484)
Browse files Browse the repository at this point in the history
* Unify settings UI

* Rebase fixes

Reuse layouts across all the settings views.

* Fixed performance monitor reset
  • Loading branch information
keianhzo authored and bluemarvin committed Aug 5, 2019
1 parent 9856aae commit 028c538
Show file tree
Hide file tree
Showing 20 changed files with 554 additions and 670 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,83 +6,75 @@
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);
initialize(aContext);
}

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));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,76 +6,63 @@
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);
initialize(aContext);
}

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) -> {
Expand All @@ -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);

Expand All @@ -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);

Expand All @@ -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);

Expand All @@ -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);

Expand Down

0 comments on commit 028c538

Please sign in to comment.