Skip to content

Commit

Permalink
Use the same widget texture for all settings screens (#1218)
Browse files Browse the repository at this point in the history
  • Loading branch information
MortimerGoro authored and philip-lamb committed May 16, 2019
1 parent 3bc1f2f commit 0ccdaf8
Show file tree
Hide file tree
Showing 9 changed files with 222 additions and 556 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import org.mozilla.vrbrowser.audio.AudioEngine;
import org.mozilla.vrbrowser.browser.SessionStore;
import org.mozilla.vrbrowser.ui.views.UIButton;
import org.mozilla.vrbrowser.ui.widgets.dialogs.SettingsWidget;
import org.mozilla.vrbrowser.ui.widgets.settings.SettingsWidget;

import java.util.ArrayList;
import java.util.Arrays;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,52 +3,29 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

package org.mozilla.vrbrowser.ui.widgets.options;
package org.mozilla.vrbrowser.ui.widgets.settings;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ScrollView;

import org.mozilla.vrbrowser.R;
import org.mozilla.vrbrowser.audio.AudioEngine;
import org.mozilla.vrbrowser.browser.SessionStore;
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.ui.views.settings.DoubleEditSetting;
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.UIWidget;
import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate;
import org.mozilla.vrbrowser.ui.widgets.WidgetPlacement;
import org.mozilla.vrbrowser.ui.widgets.dialogs.RestartDialogWidget;

public class ControllerOptionsWidget extends UIWidget implements WidgetManagerDelegate.WorldClickListener {
class ControllerOptionsView extends SettingsView {
private AudioEngine mAudio;
private UIButton mBackButton;

private RadioGroupSetting mPointerColorRadio;
private RadioGroupSetting mScrollDirectionRadio;


private ButtonSetting mResetButton;

private ScrollView mScrollbar;

public ControllerOptionsWidget(Context aContext) {
super(aContext);
initialize(aContext);
}

public ControllerOptionsWidget(Context aContext, AttributeSet aAttrs) {
super(aContext, aAttrs);
initialize(aContext);
}

public ControllerOptionsWidget(Context aContext, AttributeSet aAttrs, int aDefStyle) {
super(aContext, aAttrs, aDefStyle);
public ControllerOptionsView(Context aContext, WidgetManagerDelegate aWidgetManager) {
super(aContext, aWidgetManager);
initialize(aContext);
}

Expand All @@ -61,11 +38,7 @@ private void initialize(Context aContext) {
if (mAudio != null) {
mAudio.playSound(AudioEngine.Sound.CLICK);
}

hide(REMOVE_WIDGET);
if (mDelegate != null) {
mDelegate.onDismiss();
}
onDismiss();
});

mScrollbar = findViewById(R.id.scrollbar);
Expand All @@ -85,33 +58,11 @@ private void initialize(Context aContext) {
}

@Override
protected void initializeWidgetPlacement(WidgetPlacement aPlacement) {
aPlacement.visible = false;
aPlacement.width = WidgetPlacement.dpDimension(getContext(), R.dimen.developer_options_width);
aPlacement.height = WidgetPlacement.dpDimension(getContext(), R.dimen.developer_options_height);
aPlacement.parentAnchorX = 0.5f;
aPlacement.parentAnchorY = 0.5f;
aPlacement.anchorX = 0.5f;
aPlacement.anchorY = 0.5f;
aPlacement.translationY = WidgetPlacement.unitFromMeters(getContext(), R.dimen.restart_dialog_world_y);
aPlacement.translationZ = WidgetPlacement.unitFromMeters(getContext(), R.dimen.restart_dialog_world_z);
}

@Override
public void show() {
super.show();

mWidgetManager.addWorldClickListener(this);
public void onShown() {
super.onShown();
mScrollbar.scrollTo(0, 0);
}

@Override
public void hide(@HideFlags int aHideFlags) {
super.hide(aHideFlags);

mWidgetManager.removeWorldClickListener(this);
}

private void resetOptions() {
if (!mPointerColorRadio.getValueForId(mPointerColorRadio.getCheckedRadioButtonId()).equals(SettingsStore.POINTER_COLOR_DEFAULT_DEFAULT)) {
setPointerColor(mPointerColorRadio.getIdForValue(SettingsStore.POINTER_COLOR_DEFAULT_DEFAULT), true);
Expand Down Expand Up @@ -150,11 +101,4 @@ private void setScrollDirection(int checkedId, boolean doApply) {
setScrollDirection(checkedId, doApply);
};

// WorldClickListener
@Override
public void onWorldClick() {
if (isVisible()) {
onDismiss();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

package org.mozilla.vrbrowser.ui.widgets.options;
package org.mozilla.vrbrowser.ui.widgets.settings;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ScrollView;

Expand All @@ -16,48 +15,26 @@
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.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.UIWidget;
import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate;
import org.mozilla.vrbrowser.ui.widgets.WidgetPlacement;
import org.mozilla.vrbrowser.ui.widgets.dialogs.RestartDialogWidget;

import static org.mozilla.vrbrowser.utils.ServoUtils.isServoAvailable;

public class DeveloperOptionsWidget extends UIWidget implements
WidgetManagerDelegate.WorldClickListener,
WidgetManagerDelegate.FocusChangeListener {

class DeveloperOptionsView extends SettingsView {
private AudioEngine mAudio;
private UIButton mBackButton;

private SwitchSetting mRemoteDebuggingSwitch;
private SwitchSetting mConsoleLogsSwitch;
private SwitchSetting mMultiprocessSwitch;
private SwitchSetting mServoSwitch;

private SingleEditSetting mHomepageEdit;
private String mDefaultHomepageUrl;

private ButtonSetting mResetButton;

private int mRestartDialogHandle = -1;
private ScrollView mScrollbar;

public DeveloperOptionsWidget(Context aContext) {
super(aContext);
initialize(aContext);
}

public DeveloperOptionsWidget(Context aContext, AttributeSet aAttrs) {
super(aContext, aAttrs);
initialize(aContext);
}

public DeveloperOptionsWidget(Context aContext, AttributeSet aAttrs, int aDefStyle) {
super(aContext, aAttrs, aDefStyle);
public DeveloperOptionsView(Context aContext, WidgetManagerDelegate aWidgetManager) {
super(aContext, aWidgetManager);
initialize(aContext);
}

Expand All @@ -72,10 +49,7 @@ private void initialize(Context aContext) {
mAudio.playSound(AudioEngine.Sound.CLICK);
}

hide(REMOVE_WIDGET);
if (mDelegate != null) {
mDelegate.onDismiss();
}
onDismiss();
});

mDefaultHomepageUrl = getContext().getString(R.string.homepage_url);
Expand Down Expand Up @@ -114,35 +88,15 @@ private void initialize(Context aContext) {
}

@Override
protected void initializeWidgetPlacement(WidgetPlacement aPlacement) {
aPlacement.visible = false;
aPlacement.width = WidgetPlacement.dpDimension(getContext(), R.dimen.developer_options_width);
aPlacement.height = WidgetPlacement.dpDimension(getContext(), R.dimen.developer_options_height);
aPlacement.parentAnchorX = 0.5f;
aPlacement.parentAnchorY = 0.5f;
aPlacement.anchorX = 0.5f;
aPlacement.anchorY = 0.5f;
aPlacement.translationY = WidgetPlacement.unitFromMeters(getContext(), R.dimen.restart_dialog_world_y);
aPlacement.translationZ = WidgetPlacement.unitFromMeters(getContext(), R.dimen.restart_dialog_world_z);
}

@Override
public void show() {
super.show();

mWidgetManager.addWorldClickListener(this);
mWidgetManager.addFocusChangeListener(this);
public void onShown() {
super.onShown();
mScrollbar.scrollTo(0, 0);
}

@Override
public void hide(@HideFlags int aHideFlags) {
super.hide(aHideFlags);

public void onHidden() {
super.onHidden();
mHomepageEdit.cancel();

mWidgetManager.removeWorldClickListener(this);
mWidgetManager.removeFocusChangeListener(this);
}

@Override
Expand All @@ -155,23 +109,6 @@ protected void onDismiss() {
}
}

private void showRestartDialog() {
hide(UIWidget.REMOVE_WIDGET);

UIWidget widget = getChild(mRestartDialogHandle);
if (widget == null) {
widget = createChild(RestartDialogWidget.class, false);
mRestartDialogHandle = widget.getHandle();
widget.setDelegate(() -> onRestartDialogDismissed());
}

widget.show();
}

private void onRestartDialogDismissed() {
show();
}

private OnClickListener mHomepageListener = (view) -> {
if (!mHomepageEdit.getFirstText().isEmpty()) {
setHomepage(mHomepageEdit.getFirstText());
Expand Down Expand Up @@ -215,8 +152,9 @@ private void onRestartDialogDismissed() {
}
setHomepage(mDefaultHomepageUrl);

if (restart)
if (restart && mDelegate != null) {
showRestartDialog();
}
};

private void setHomepage(String newHomepage) {
Expand Down Expand Up @@ -274,28 +212,13 @@ private void setServo(boolean value, boolean doApply) {
}
}

// WindowManagerDelegate.FocusChangeListener

@Override
public void onGlobalFocusChanged(View oldFocus, View newFocus) {
if (oldFocus != null) {
if (mHomepageEdit.contains(oldFocus) && mHomepageEdit.isEditing()) {
mHomepageEdit.cancel();
}
}

if (oldFocus == this && isVisible() && findViewById(newFocus.getId()) == null) {
onDismiss();
}
}

// WorldClickListener

@Override
public void onWorldClick() {
if (isVisible()) {
onDismiss();
}
}

}

0 comments on commit 0ccdaf8

Please sign in to comment.