From 1fdbcc6de952f17c45d8bad64f3e9121fb077301 Mon Sep 17 00:00:00 2001 From: Yuriy Liskov Date: Tue, 11 Feb 2020 22:58:05 +0200 Subject: [PATCH] add azerty layouts --- .../leankeyboard/addons/KeyboardInfo.java | 6 +- .../addons/kbdsize/KeyboardSizeWatcher.java | 4 -- .../reskbdfactory/ResKeyboardBuilder.java | 13 ---- .../reskbdfactory/ResKeyboardFactory.java | 20 +++--- .../addons/reskbdfactory/ResKeyboardInfo.java | 23 ++++++- .../reskbdfactory/ResKeyboardManager.java | 11 --- .../src/main/res/values/languages.xml | 2 + .../src/main/res/xml/azerty_en_us.xml | 4 +- .../src/main/res/xml/azerty_fr.xml | 69 +++++++++++++++++++ .../src/main/res/xml/{ => unused}/azerty.xml | 0 10 files changed, 111 insertions(+), 41 deletions(-) delete mode 100644 leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/kbdsize/KeyboardSizeWatcher.java delete mode 100644 leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardBuilder.java delete mode 100644 leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardManager.java create mode 100644 leankeykeyboard/src/main/res/xml/azerty_fr.xml rename leankeykeyboard/src/main/res/xml/{ => unused}/azerty.xml (100%) diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/KeyboardInfo.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/KeyboardInfo.java index 8370c1f..a3d376f 100644 --- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/KeyboardInfo.java +++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/KeyboardInfo.java @@ -1,10 +1,12 @@ package com.liskovsoft.leankeyboard.addons; public interface KeyboardInfo { - boolean isEnabled(); String getLangCode(); + void setLangCode(String langCode); String getLangName(); void setLangName(String langName); - void setLangCode(String langCode); + boolean isEnabled(); void setEnabled(boolean enabled); + boolean isAzerty(); + void setIsAzerty(boolean enabled); } diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/kbdsize/KeyboardSizeWatcher.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/kbdsize/KeyboardSizeWatcher.java deleted file mode 100644 index 4e93f53..0000000 --- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/kbdsize/KeyboardSizeWatcher.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.liskovsoft.leankeyboard.addons.kbdsize; - -public class KeyboardSizeWatcher { -} diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardBuilder.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardBuilder.java deleted file mode 100644 index 4ad62a5..0000000 --- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardBuilder.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.liskovsoft.leankeyboard.addons.reskbdfactory; - -import android.inputmethodservice.Keyboard; -import androidx.annotation.Nullable; -import com.liskovsoft.leankeyboard.addons.KeyboardBuilder; - -class ResKeyboardBuilder implements KeyboardBuilder { - @Nullable - @Override - public Keyboard createKeyboard() { - return null; - } -} diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardFactory.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardFactory.java index 0c3abc2..760df4e 100644 --- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardFactory.java +++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardFactory.java @@ -2,7 +2,6 @@ package com.liskovsoft.leankeyboard.addons.reskbdfactory; import android.content.Context; import android.inputmethodservice.Keyboard; -import androidx.annotation.Nullable; import com.liskovsoft.leankeyboard.addons.KeyboardBuilder; import com.liskovsoft.leankeyboard.addons.KeyboardFactory; import com.liskovsoft.leankeyboard.addons.KeyboardInfo; @@ -23,17 +22,15 @@ public class ResKeyboardFactory implements KeyboardFactory { List infos = ResKeyboardInfo.getAllKeyboardInfos(context); for (final KeyboardInfo info : infos) { - if (!info.isEnabled()) { - continue; + if (info.isEnabled()) { + result.add(createKeyboard(info)); } - - result.add(createKeyboard(info.getLangCode())); } // at least one kbd should be enabled if (result.isEmpty()) { KeyboardInfo firstKbd = infos.get(0); - result.add(createKeyboard(firstKbd.getLangCode())); + result.add(createKeyboard(firstKbd)); firstKbd.setEnabled(true); ResKeyboardInfo.updateAllKeyboardInfos(mContext, infos); } @@ -41,8 +38,15 @@ public class ResKeyboardFactory implements KeyboardFactory { return result; } - private KeyboardBuilder createKeyboard(final String langCode) { - return () -> new Keyboard(mContext, mContext.getResources().getIdentifier("qwerty_" + langCode, "xml", mContext.getPackageName())); + /** + * NOTE: create keyboard from xml data + */ + private KeyboardBuilder createKeyboard(final KeyboardInfo info) { + return () -> { + String prefix = info.isAzerty() ? "azerty_" : "qwerty_"; + int kbResId = mContext.getResources().getIdentifier(prefix + info.getLangCode(), "xml", mContext.getPackageName()); + return new Keyboard(mContext, kbResId); + }; } @Override diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardInfo.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardInfo.java index 517db94..15f6010 100644 --- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardInfo.java +++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardInfo.java @@ -3,6 +3,7 @@ package com.liskovsoft.leankeyboard.addons.reskbdfactory; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; +import androidx.annotation.NonNull; import com.liskovsoft.leankeyboard.addons.KeyboardInfo; import com.liskovsoft.leankeykeyboard.R; @@ -14,6 +15,7 @@ public class ResKeyboardInfo implements KeyboardInfo { private boolean mEnabled; private String mLangCode; private String mLangName; + private boolean mIsAzerty; public static List getAllKeyboardInfos(Context ctx) { List result = new ArrayList<>(); @@ -22,9 +24,11 @@ public class ResKeyboardInfo implements KeyboardInfo { String[] pairs = langPair.split("\\|"); final String langName = pairs[0]; final String langCode = pairs[1]; + final boolean isAzerty = pairs.length >= 3 && "azerty".equals(pairs[2]); KeyboardInfo info = new ResKeyboardInfo(); info.setLangName(langName); info.setLangCode(langCode); + info.setIsAzerty(isAzerty); // sync with prefs syncWithPrefs(ctx, info); result.add(info); @@ -43,7 +47,7 @@ public class ResKeyboardInfo implements KeyboardInfo { private static void syncWithPrefs(Context ctx, KeyboardInfo info) { final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ctx); - final boolean kbdEnabled = sharedPreferences.getBoolean(info.getLangCode(), false); + final boolean kbdEnabled = sharedPreferences.getBoolean(info.toString(), false); info.setEnabled(kbdEnabled); } @@ -51,7 +55,7 @@ public class ResKeyboardInfo implements KeyboardInfo { final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ctx); final SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.putBoolean(info.getLangCode(), info.isEnabled()); + editor.putBoolean(info.toString(), info.isEnabled()); editor.apply(); } @@ -89,4 +93,19 @@ public class ResKeyboardInfo implements KeyboardInfo { mEnabled = enabled; } + @Override + public boolean isAzerty() { + return mIsAzerty; + } + + @Override + public void setIsAzerty(boolean isAzerty) { + mIsAzerty = isAzerty; + } + + @NonNull + @Override + public String toString() { + return String.format("{Name: %s, Code: %s, IsAzerty: %b}", mLangName, mLangCode, mIsAzerty); + } } diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardManager.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardManager.java deleted file mode 100644 index 39897b6..0000000 --- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/addons/reskbdfactory/ResKeyboardManager.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.liskovsoft.leankeyboard.addons.reskbdfactory; - -import com.liskovsoft.leankeyboard.addons.KeyboardInfo; - -import java.util.List; - -class ResKeyboardManager { - public List getAllKeyboardInfos() { - return null; - } -} diff --git a/leankeykeyboard/src/main/res/values/languages.xml b/leankeykeyboard/src/main/res/values/languages.xml index 4aa6496..218a4b1 100644 --- a/leankeykeyboard/src/main/res/values/languages.xml +++ b/leankeykeyboard/src/main/res/values/languages.xml @@ -2,12 +2,14 @@ English|en_us + English (azerty)|en_us|azerty German|de Russian|ru Ukrainian|uk Bulgarian|bg Dutch|nl French|fr + French (azerty)|fr|azerty Greek|el Icelandic|is Italian|it diff --git a/leankeykeyboard/src/main/res/xml/azerty_en_us.xml b/leankeykeyboard/src/main/res/xml/azerty_en_us.xml index b732d96..255a2a3 100644 --- a/leankeykeyboard/src/main/res/xml/azerty_en_us.xml +++ b/leankeykeyboard/src/main/res/xml/azerty_en_us.xml @@ -56,7 +56,9 @@ - + + + diff --git a/leankeykeyboard/src/main/res/xml/azerty_fr.xml b/leankeykeyboard/src/main/res/xml/azerty_fr.xml new file mode 100644 index 0000000..5978922 --- /dev/null +++ b/leankeykeyboard/src/main/res/xml/azerty_fr.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/leankeykeyboard/src/main/res/xml/azerty.xml b/leankeykeyboard/src/main/res/xml/unused/azerty.xml similarity index 100% rename from leankeykeyboard/src/main/res/xml/azerty.xml rename to leankeykeyboard/src/main/res/xml/unused/azerty.xml