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

Implement Spanish keyboard #1158

Merged
merged 2 commits into from
May 8, 2019
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
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,12 @@
import org.mozilla.vrbrowser.R;
import org.mozilla.vrbrowser.telemetry.TelemetryWrapper;
import org.mozilla.vrbrowser.utils.LocaleUtils;
import org.mozilla.vrbrowser.utils.StringUtils;

import androidx.annotation.NonNull;

import java.util.Locale;

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

public class SettingsStore {
Expand Down Expand Up @@ -423,5 +426,19 @@ public void setFoveatedLevelWebVR(int level) {
editor.putInt(mContext.getString(R.string.settings_key_foveated_webvr), level);
editor.commit();
}

public void setSelectedKeyboard(Locale aLocale) {
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString(mContext.getString(R.string.settings_key_keyboard_locale), aLocale.toLanguageTag());
editor.commit();
}

public Locale getKeyboardLocale() {
String value = mPrefs.getString(mContext.getString(R.string.settings_key_keyboard_locale), null);
if (StringUtils.isEmpty(value)) {
return null;
}
return Locale.forLanguageTag(value);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ public boolean usesComposingText() {

@Override
public String getKeyboardTitle() {
return mContext.getString(R.string.settings_language_simplified_chinese);
return StringUtils.getStringByLocale(mContext, R.string.settings_language_simplified_chinese, getLocale());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import org.mozilla.vrbrowser.R;
import org.mozilla.vrbrowser.input.CustomKeyboard;
import org.mozilla.vrbrowser.utils.StringUtils;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
Expand Down Expand Up @@ -34,7 +35,7 @@ public CandidatesResult getCandidates(String aText) {

@Override
public String getKeyboardTitle() {
return mContext.getString(R.string.settings_language_english);
return StringUtils.getStringByLocale(mContext, R.string.settings_language_english, getLocale());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package org.mozilla.vrbrowser.ui.keyboards;

import android.content.Context;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import org.mozilla.vrbrowser.R;
import org.mozilla.vrbrowser.input.CustomKeyboard;
import org.mozilla.vrbrowser.utils.StringUtils;

import java.util.Locale;

public class SpanishKeyboard extends BaseKeyboard {
private CustomKeyboard mKeyboard;
private final Locale mSpanishLocale = new Locale("es", "");

public SpanishKeyboard(Context aContext) {
super(aContext);
}

@NonNull
@Override
public CustomKeyboard getAlphabeticKeyboard() {
if (mKeyboard == null) {
mKeyboard = new CustomKeyboard(mContext.getApplicationContext(), R.xml.keyboard_qwerty_spanish);
}
return mKeyboard;
}

@Nullable
@Override
public CandidatesResult getCandidates(String aText) {
return null;
}

@Override
public String getKeyboardTitle() {
return StringUtils.getStringByLocale(mContext, R.string.settings_language_spanish, getLocale());
}

@Override
public Locale getLocale() {
return mSpanishLocale;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -672,6 +672,7 @@ public void onSizeChanged(int w, int h, int oldw, int oldh) {
}
if (mResizeMethod != null) {
try {
mResizeMethod.setAccessible(true);
mResizeMethod.invoke(mKeyboard, w, h);
}
catch (Exception ex) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
package org.mozilla.vrbrowser.ui.views;

import android.content.Context;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.FrameLayout;
import android.widget.GridLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import org.mozilla.vrbrowser.R;
import org.mozilla.vrbrowser.ui.widgets.WidgetPlacement;

import java.util.List;


public class LanguageSelectorView extends FrameLayout {
public static class Item {
public final String title;
public final Object tag;

public Item(String aTitle, Object aTag) {
this.title = aTitle;
this.tag = aTag;
}
}

public interface Delegate {
void onLanguageClick(Item aItem);
}

private GridLayout mLangRowContainer;
private Delegate mDelegate;
private List<Item> mItems;
private int mItemWidth;
private static final int kMaxItemsPerColumn = 4;

public LanguageSelectorView(@NonNull Context context) {
super(context);
initialize();
}

public LanguageSelectorView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initialize();
}

public LanguageSelectorView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initialize();
}

private void initialize() {
inflate(getContext(), R.layout.language_selection, this);
mLangRowContainer = findViewById(R.id.langRowContainer);
mItemWidth = WidgetPlacement.pixelDimension(getContext(), R.dimen.lang_selector_item_width);
}

public void setDelegate(Delegate aDelegate) {
mDelegate = aDelegate;
}

public void setItems(List<Item> aItems) {
mItems = aItems;
mLangRowContainer.removeAllViews();
int columns = (aItems.size() / kMaxItemsPerColumn) + 1;
int rows = aItems.size() < kMaxItemsPerColumn ? aItems.size() : kMaxItemsPerColumn;
mLangRowContainer.setColumnCount(columns);
mLangRowContainer.setRowCount(rows);

for (Item item: aItems) {
GridLayout.LayoutParams params = new GridLayout.LayoutParams();
params.width = mItemWidth;
mLangRowContainer.addView(createLangButton(item), params);
}
}

public List<Item> getItems() {
return mItems;
}

private OnClickListener clickHandler = v -> {
UITextButton button = (UITextButton) v;
if (mDelegate != null) {
mDelegate.onLanguageClick((Item)button.getTag());
}
};

private UITextButton createLangButton(Item aItem) {
UITextButton button = new UITextButton(getContext());
button.setTintColorList(R.drawable.lang_selector_button_color);
button.setBackground(getContext().getDrawable(R.drawable.lang_selector_button_background));
button.setOnClickListener(clickHandler);
button.setPadding(13, 13, 13, 13);
button.setIncludeFontPadding(false);
button.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13);
button.setText(aItem.title);
button.setTextAlignment(TEXT_ALIGNMENT_VIEW_START);
button.setTag(aItem);

return button;
}
}
Loading