Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit

Permalink
Refactored Developer Options code (#607)
Browse files Browse the repository at this point in the history
* Refactored Developer Options code

* Reverted MSAA default to 2x

* Fixed environments names and replaced by  -> x
  • Loading branch information
keianhzo authored and bluemarvin committed Oct 10, 2018
1 parent 0ad0545 commit 4d6344f
Show file tree
Hide file tree
Showing 19 changed files with 1,109 additions and 1,310 deletions.
11 changes: 5 additions & 6 deletions app/src/common/shared/org/mozilla/vrbrowser/SettingsStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

import org.mozilla.telemetry.TelemetryHolder;
import org.mozilla.vrbrowser.telemetry.TelemetryWrapper;
import org.mozilla.vrbrowser.ui.DeveloperOptionsWidget;


public class SettingsStore {
Expand All @@ -35,8 +34,8 @@ SettingsStore getInstance(final @NonNull Context aContext) {
public final static boolean CONSOLE_LOGS_DEFAULT = false;
public final static boolean ENV_OVERRIDE_DEFAULT = false;
public final static boolean MULTIPROCESS_DEFAULT = false;
public final static DeveloperOptionsWidget.UaMode UA_MODE_DEFAULT = DeveloperOptionsWidget.UaMode.MOBILE;
public final static DeveloperOptionsWidget.InputMode INPUT_MODE_DEFAULT = DeveloperOptionsWidget.InputMode.TOUCH;
public final static int UA_MODE_DEFAULT = 0;
public final static int INPUT_MODE_DEFAULT = 1;
public final static float DISPLAY_DENSITY_DEFAULT = 1.0f;
public final static int WINDOW_WIDTH_DEFAULT = 800;
public final static int WINDOW_HEIGHT_DEFAULT = 450;
Expand All @@ -47,7 +46,7 @@ SettingsStore getInstance(final @NonNull Context aContext) {
public final static String ENV_DEFAULT = "cave";
public final static float BROWSER_WORLD_WIDTH_DEFAULT = 4.0f;
public final static float BROWSER_WORLD_HEIGHT_DEFAULT = 2.25f;
public final static int MSAA_DEFAULT_LEVEL = 2;
public final static int MSAA_DEFAULT_LEVEL = 1;

// Enable telemetry by default (opt-out).
private final static boolean enableCrashReportingByDefault = false;
Expand Down Expand Up @@ -150,7 +149,7 @@ public void setMultiprocessEnabled(boolean isEnabled) {

public int getUaMode() {
return mPrefs.getInt(
mContext.getString(R.string.settings_key_desktop_version), UA_MODE_DEFAULT.ordinal());
mContext.getString(R.string.settings_key_desktop_version), UA_MODE_DEFAULT);
}

public void setUaMode(int mode) {
Expand All @@ -161,7 +160,7 @@ public void setUaMode(int mode) {

public int getInputMode() {
return mPrefs.getInt(
mContext.getString(R.string.settings_key_input_mode), INPUT_MODE_DEFAULT.ordinal());
mContext.getString(R.string.settings_key_input_mode), INPUT_MODE_DEFAULT);
}

public void setInputMode(int aTouchMode) {
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package org.mozilla.vrbrowser.ui.settings;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import org.mozilla.vrbrowser.R;
import org.mozilla.vrbrowser.audio.AudioEngine;

public class ButtonSetting extends LinearLayout {

private AudioEngine mAudio;
private String mDescription;
private String mButtonText;
private TextView mButton;
private OnClickListener mListener;

public ButtonSetting(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public ButtonSetting(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);

TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.ButtonSetting, defStyleAttr, 0);
mDescription = attributes.getString(R.styleable.ButtonSetting_description);
mButtonText = attributes.getString(R.styleable.ButtonSetting_buttonText);
attributes.recycle();

initialize(context);
}

private void initialize(Context aContext) {
inflate(aContext, R.layout.setting_button, this);

mAudio = AudioEngine.fromContext(aContext);

TextView description = findViewById(R.id.setting_description);
description.setText(mButtonText);

mButton = findViewById(R.id.button);
mButton.setText(mButtonText);
mButton.setOnClickListener(mInternalClickListener);
}

private View.OnClickListener mInternalClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickListener(v);
}
};

protected void onClickListener(View v) {
if (mAudio != null) {
mAudio.playSound(AudioEngine.Sound.CLICK);
}

if (mListener != null) {
mListener.onClick(v);
}
}

public void setOnClickListener(OnClickListener aListener) {
mListener = aListener;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package org.mozilla.vrbrowser.ui.settings;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import org.mozilla.vrbrowser.R;

public class DoubleEditSetting extends SingleEditSetting {

private String mBy;
private TextView mText2;
private EditText mEdit2;

public DoubleEditSetting(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public DoubleEditSetting(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);

TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.EditSetting, defStyleAttr, 0);
mBy = attributes.getString(R.styleable.EditSetting_by);
attributes.recycle();

initialize(context);
}

private void initialize(Context aContext) {
TextView by = findViewById(R.id.setting_by);
by.setText(mBy);
by.setVisibility(View.VISIBLE);

mText2 = findViewById(R.id.text2);
mEdit2 = findViewById(R.id.edit2);
mEdit2.setSoundEffectsEnabled(false);

mEdit2.setOnEditorActionListener(mInternalEditorActionListener);
}

protected void onClickListener(View v) {
mText2.setVisibility(mEdit1.getVisibility());
mEdit2.setVisibility(mEdit1.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);

super.onClickListener(v);
}

public String getSecondText() {
return mEdit2.getText().toString();
}

public void setSecondText(String text) {
mText2.setText(text);
mEdit2.setText(text);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
package org.mozilla.vrbrowser.ui.settings;

import android.content.Context;
import android.content.res.TypedArray;
import android.support.annotation.IdRes;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.ContextThemeWrapper;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

import org.mozilla.vrbrowser.R;
import org.mozilla.vrbrowser.audio.AudioEngine;

public class RadioGroupSetting extends LinearLayout {

public interface OnCheckedChangeListener {
void onCheckedChanged(RadioGroup compoundButton, @IdRes int checkedId, boolean apply);
}

private AudioEngine mAudio;
private String mDecription;
private CharSequence[] mOptions;
private Object[] mValues;
private RadioGroup mRadioGroup;
private TextView mRadioDescription;
private OnCheckedChangeListener mRadioGroupListener;

public RadioGroupSetting(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public RadioGroupSetting(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);

TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.RadioGroupSetting, defStyleAttr, 0);
mDecription = attributes.getString(R.styleable.RadioGroupSetting_description);
mOptions = attributes.getTextArray(R.styleable.RadioGroupSetting_options);
int id = attributes.getResourceId(R.styleable.RadioGroupSetting_values, 0);
TypedArray array = context.getResources().obtainTypedArray(id);
if (array.getType(0) == TypedValue.TYPE_STRING) {
mValues = getResources().getStringArray(id);

} else if (array.getType(0) == TypedValue.TYPE_INT_HEX ||
array.getType(0) == TypedValue.TYPE_INT_DEC) {
int [] values = getResources().getIntArray(id);
mValues = new Integer[values.length];
for (int i=0; i<values.length; i++) {
mValues[i] = values[i];
}
}
attributes.recycle();

initialize(context);
}

private void initialize(Context aContext) {
inflate(aContext, R.layout.setting_radio_group, this);

mAudio = AudioEngine.fromContext(aContext);

mRadioDescription = findViewById(R.id.setting_description);
mRadioDescription.setText(mDecription);

mRadioGroup = findViewById(R.id.radio_group);
mRadioGroup.setSoundEffectsEnabled(false);

for (int i=0; i<mOptions.length; i++) {
RadioButton button = new RadioButton(new ContextThemeWrapper(getContext(), R.style.radioButtonTheme), null, 0);
button.setClickable(true);
button.setId(i);
button.setText(mOptions[i]);
button.setSoundEffectsEnabled(false);
mRadioGroup.addView(button);
}

mRadioGroup.setOnCheckedChangeListener(mInternalRadioListener);
}

private RadioGroup.OnCheckedChangeListener mInternalRadioListener = new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup compoundButton, @IdRes int checkedId) {
if (mAudio != null) {
mAudio.playSound(AudioEngine.Sound.CLICK);
}

setChecked(checkedId, true);
}
};

public void setChecked(@IdRes int checkedId, boolean doApply) {
mRadioGroup.setOnCheckedChangeListener(null);
for (int i=0; i<mRadioGroup.getChildCount(); i++) {
RadioButton button = (RadioButton) mRadioGroup.getChildAt(i);
if (i == checkedId) {
button.setChecked(true);

} else {
button.setChecked(false);
}
}
mRadioGroup.setOnCheckedChangeListener(mInternalRadioListener);

if (mRadioGroupListener != null && doApply) {
mRadioGroupListener.onCheckedChanged(mRadioGroup, checkedId, doApply);
}
}

public void setOnCheckedChangeListener(OnCheckedChangeListener aListener) {
mRadioGroupListener = aListener;
}

public Object getValueForId(@IdRes int checkId) {
return mValues[checkId];
}

public int getIdForValue(Object value) {
for (int i=0; i<mValues.length; i++) {
if (mValues[i].equals(value)) {
return i;
}
}

return -1;
}

public int getCheckedRadioButtonId() {
return mRadioGroup.getCheckedRadioButtonId();
}

}
Loading

0 comments on commit 4d6344f

Please sign in to comment.