package org.geogebra.common.main.settings;
import java.util.ArrayList;
import java.util.LinkedList;
import org.geogebra.common.util.debug.Log;
import org.geogebra.common.util.lang.Language;
/**
* Settings for Virtual Keyboard
*
* @author Zbynek Konecny
*
*/
public class KeyboardSettings extends AbstractSettings {
/**
* List of supported locales as strings, e.g. hu, en_GB
*/
private static final ArrayList<String> supportedLocales = new ArrayList<String>();
static {
supportedLocales.add(Language.Arabic.locale); // Arabic
// same keyboard layout (TODO: maybe combine)
supportedLocales.add(Language.Croatian.locale); // Croatian
supportedLocales.add(Language.Serbian.locale); // Serbian
supportedLocales.add(Language.Slovenian.locale); // Slovenian
supportedLocales.add(Language.Czech.locale); // Czech
supportedLocales.add(Language.Danish.locale); // Danish
supportedLocales.add(Language.English_UK.locale); // English (UK)
supportedLocales.add(Language.French.locale); // French
supportedLocales.add(Language.German.locale); // German
supportedLocales.add(Language.Greek.locale); // Greek
supportedLocales.add(Language.Finnish.locale); // Finnish
supportedLocales.add(Language.Hebrew.locale); // Hebrew
supportedLocales.add(Language.Hindi.locale); // Hindi
supportedLocales.add(Language.Hungarian.locale); // Hungarian
supportedLocales.add(Language.Korean.locale); // Korean
supportedLocales.add(Language.Macedonian.locale); // Macedonian
// supportedLocales.add(Language.Malayalam.locale); // Malayalam
supportedLocales.add("no"); // Norwegian (covers both)
supportedLocales.add(Language.Persian.locale); // Persian
// supportedLocales.add("pt_PT"); // Portuguese (Portugal)
supportedLocales.add(Language.Russian.locale); // Russian
supportedLocales.add(Language.Slovak.locale); // Slovak
supportedLocales.add(Language.Spanish.locale); // Spanish
supportedLocales.add(Language.Yiddish.locale);
}
private double keyboardOpacity = 0.7f;
private int keyboardWidth = 400;
private int keyboardHeight = 235;
private String keyboardLocale = null;
private boolean showKeyboardOnStart = false;
public KeyboardSettings(LinkedList<SettingListener> listeners) {
super(listeners);
}
public KeyboardSettings() {
super();
}
public double getKeyboardOpacity() {
return keyboardOpacity;
}
public int getKeyboardWidth() {
return keyboardWidth;
}
public int getKeyboardHeight() {
return keyboardHeight;
}
public String getKeyboardLocale() {
return keyboardLocale;
}
/*
* public void setKeyboardLocale(String loc) { keyboardLocale = loc;
* settingChanged(); }
*/
public void setKeyboardWidth(int windowWidth) {
keyboardWidth = windowWidth;
settingChanged();
}
public void setKeyboardHeight(int windowHeight) {
keyboardHeight = windowHeight;
settingChanged();
}
/**
* @param showKeyboardOnStart
* the showKeyboardOnStart to set
*/
public void setShowKeyboardOnStart(boolean showKeyboardOnStart) {
this.showKeyboardOnStart = showKeyboardOnStart;
settingChanged();
}
/**
* @return the showKeyboardOnStart
*/
public boolean isShowKeyboardOnStart() {
return showKeyboardOnStart;
}
public void setKeyboardOpacity(double opacity) {
keyboardOpacity = opacity;
settingChanged();
}
public void keyboardResized(int windowWidth, int windowHeight) {
keyboardWidth = windowWidth;
keyboardHeight = windowHeight;
}
public void setKeyboardLocale(String string) {
if (string == null) {
return;
}
for (int i = 0; i < supportedLocales.size(); i++) {
if (supportedLocales.get(i).toString().equals(string)) {
keyboardLocale = supportedLocales.get(i);
settingChanged();
return;
}
}
Log.debug("Unsupported keyboard locale: " + string);
}
public static int getLocaleCount() {
return supportedLocales.size();
}
public static String getLocale(int i) {
return supportedLocales.get(i);
}
public static int indexOfLocale(String loc) {
return supportedLocales.indexOf(loc);
}
}