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

Refactored Developer Options code #607

Merged
merged 3 commits into from
Oct 10, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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