mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-08 01:45:32 +00:00
feat[android]: new keyboard marker
This commit is contained in:
parent
8b65f6bd5c
commit
d6de9e3afd
7 changed files with 91 additions and 36 deletions
|
|
@ -854,7 +854,8 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi
|
|||
kbInfo.put(KMManager.KMKey_OskFont, kOskFont);
|
||||
if (i == 0) {
|
||||
if (KMManager.addKeyboard(this, kbInfo)) {
|
||||
KMManager.setKeyboard(packageID, keyboardID, langId, keyboardName, langName, kFont, kOskFont);
|
||||
if (!KMKeyboardDownloaderActivity.USE_DOWNLOAD_MANAGER)
|
||||
KMManager.setKeyboard(packageID, keyboardID, langId, keyboardName, langName, kFont, kOskFont);
|
||||
}
|
||||
} else {
|
||||
KMManager.addKeyboard(this, kbInfo);
|
||||
|
|
@ -862,7 +863,8 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi
|
|||
}
|
||||
} else {
|
||||
if (KMManager.addKeyboard(this, keyboardInfo)) {
|
||||
KMManager.setKeyboard(packageID, keyboardID, languageID, keyboardName, languageName, kFont, kOskFont);
|
||||
if (!KMKeyboardDownloaderActivity.USE_DOWNLOAD_MANAGER)
|
||||
KMManager.setKeyboard(packageID, keyboardID, languageID, keyboardName, languageName, kFont, kOskFont);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -74,8 +74,12 @@ final class KMKeyboardPickerAdapter extends NestedAdapter<Keyboard, Dataset.Keyb
|
|||
holder = (ViewHolder) convertView.getTag();
|
||||
}
|
||||
|
||||
holder.textLang.setText(kbd.map.get(KMManager.KMKey_LanguageName));
|
||||
holder.textKbd.setText(kbd.map.get(KMManager.KMKey_KeyboardName));
|
||||
if(kbd.isNewKeyboard())
|
||||
holder.textLang.setText(getContext().getText(R.string.keyboard_picker_new_keyboard_prefix)
|
||||
+ kbd.getLanguageName());
|
||||
else
|
||||
holder.textLang.setText(kbd.getLanguageName());
|
||||
holder.textKbd.setText(kbd.getResourceName());
|
||||
|
||||
if (listFont != null) {
|
||||
holder.textLang.setTypeface(listFont, Typeface.BOLD);
|
||||
|
|
|
|||
|
|
@ -145,7 +145,8 @@ public final class KeyboardListActivity extends AppCompatActivity implements OnK
|
|||
String kOskFont = keyboardInfo.get(KMManager.KMKey_OskFont);
|
||||
|
||||
KeyboardPickerActivity.addKeyboard(this, keyboardInfo);
|
||||
KMManager.setKeyboard(packageID, keyboardID, languageID, keyboardName, languageName, kFont, kOskFont);
|
||||
if (!KMKeyboardDownloaderActivity.USE_DOWNLOAD_MANAGER)
|
||||
KMManager.setKeyboard(packageID, keyboardID, languageID, keyboardName, languageName, kFont, kOskFont);
|
||||
}
|
||||
finish();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,34 @@
|
|||
|
||||
package com.tavultesoft.kmea;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemLongClickListener;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.ListView;
|
||||
import android.widget.PopupMenu;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import com.tavultesoft.kmea.data.CloudDataJsonUtil;
|
||||
import com.tavultesoft.kmea.data.CloudRepository;
|
||||
import com.tavultesoft.kmea.data.Dataset;
|
||||
import com.tavultesoft.kmea.data.Keyboard;
|
||||
import com.tavultesoft.kmea.data.LexicalModel;
|
||||
import com.tavultesoft.kmea.util.MapCompat;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
|
|
@ -14,35 +42,6 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.tavultesoft.kmea.data.CloudDataJsonUtil;
|
||||
import com.tavultesoft.kmea.data.CloudRepository;
|
||||
import com.tavultesoft.kmea.data.Dataset;
|
||||
import com.tavultesoft.kmea.data.Keyboard;
|
||||
import com.tavultesoft.kmea.data.LexicalModel;
|
||||
import com.tavultesoft.kmea.util.MapCompat;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Bundle;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemLongClickListener;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ListView;
|
||||
import android.widget.PopupMenu;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
public final class KeyboardPickerActivity extends AppCompatActivity {
|
||||
|
||||
private static Toolbar toolbar = null;
|
||||
|
|
@ -50,6 +49,8 @@ public final class KeyboardPickerActivity extends AppCompatActivity {
|
|||
private static Button closeButton = null;
|
||||
private static KMKeyboardPickerAdapter listAdapter = null;
|
||||
|
||||
public static final String KMKEY_INTERNAL_NEW_KEYBOARD = "_internal_new_keyboard_";
|
||||
|
||||
// Lists of installed keyboards and installed lexical models
|
||||
private static ArrayList<HashMap<String, String>> keyboardsList = null;
|
||||
private static ArrayList<HashMap<String, String>> lexicalModelsList = null;
|
||||
|
|
@ -176,6 +177,39 @@ public final class KeyboardPickerActivity extends AppCompatActivity {
|
|||
|
||||
int curKbPos = getCurrentKeyboardIndex();
|
||||
setSelection(curKbPos);
|
||||
|
||||
KMKeyboard.addOnKeyboardEventListener(new KeyboardEventHandler.OnKeyboardEventListener() {
|
||||
@Override
|
||||
public void onKeyboardLoaded(KMManager.KeyboardType keyboardType) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onKeyboardChanged(String newKeyboard) {
|
||||
int _index = getKeyboardIndex(context,newKeyboard);
|
||||
if(_index>=0)
|
||||
{
|
||||
Map<String,String> _keyboard = keyboardsList.get(_index);
|
||||
if(_keyboard==null)
|
||||
return;
|
||||
if(_keyboard.get(KMKEY_INTERNAL_NEW_KEYBOARD)==null)
|
||||
return;
|
||||
_keyboard.remove(KMKEY_INTERNAL_NEW_KEYBOARD);
|
||||
saveList(context, KMManager.KMFilename_KeyboardsList);
|
||||
notifyKeyboardsUpdate(context);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onKeyboardShown() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onKeyboardDismissed() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -343,9 +377,12 @@ public final class KeyboardPickerActivity extends AppCompatActivity {
|
|||
if (kbKey.length() >= 3) {
|
||||
int x = getKeyboardIndex(context, kbKey);
|
||||
if (x >= 0) {
|
||||
if(keyboardsList.get(x).get(KMKEY_INTERNAL_NEW_KEYBOARD)!=null)
|
||||
keyboardInfo.put(KMKEY_INTERNAL_NEW_KEYBOARD,KMKEY_INTERNAL_NEW_KEYBOARD);
|
||||
keyboardsList.set(x, keyboardInfo);
|
||||
result = saveList(context, KMManager.KMFilename_KeyboardsList);
|
||||
} else {
|
||||
keyboardInfo.put(KMKEY_INTERNAL_NEW_KEYBOARD,KMKEY_INTERNAL_NEW_KEYBOARD);
|
||||
keyboardsList.add(keyboardInfo);
|
||||
result = saveList(context, KMManager.KMFilename_KeyboardsList);
|
||||
if (!result) {
|
||||
|
|
|
|||
|
|
@ -137,7 +137,9 @@ public final class LanguageListActivity extends AppCompatActivity implements OnK
|
|||
if (!pkgID.equals(KMManager.KMDefault_UndefinedPackageID)) {
|
||||
// Custom keyboard already exists in packages/ so just add the language association
|
||||
KeyboardPickerActivity.addKeyboard(context, kbInfo);
|
||||
KMManager.setKeyboard(pkgID, kbID, langID, kbName, language.name, kFont, kOskFont);
|
||||
|
||||
if (!KMKeyboardDownloaderActivity.USE_DOWNLOAD_MANAGER)
|
||||
KMManager.setKeyboard(pkgID, kbID, langID, kbName, language.name, kFont, kOskFont);
|
||||
Toast.makeText(context, "Keyboard installed", Toast.LENGTH_SHORT).show();
|
||||
setResult(RESULT_OK);
|
||||
((AppCompatActivity) context).finish();
|
||||
|
|
@ -214,7 +216,8 @@ public final class LanguageListActivity extends AppCompatActivity implements OnK
|
|||
String kOskFont = keyboardInfo.get(KMManager.KMKey_OskFont);
|
||||
|
||||
KeyboardPickerActivity.addKeyboard(this, keyboardInfo);
|
||||
KMManager.setKeyboard(packageID, keyboardID, languageID, keyboardName, languageName, kFont, kOskFont);
|
||||
if (!KMKeyboardDownloaderActivity.USE_DOWNLOAD_MANAGER)
|
||||
KMManager.setKeyboard(packageID, keyboardID, languageID, keyboardName, languageName, kFont, kOskFont);
|
||||
|
||||
if (result == 2) {
|
||||
Toast.makeText(context, context.getString(R.string.font_failed_to_download), Toast.LENGTH_LONG).show();
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import android.os.Bundle;
|
|||
|
||||
import com.tavultesoft.kmea.KMKeyboardDownloaderActivity;
|
||||
import com.tavultesoft.kmea.KMManager;
|
||||
import com.tavultesoft.kmea.KeyboardPickerActivity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
|
@ -26,6 +27,12 @@ public class Keyboard implements Serializable, LanguageResource {
|
|||
this.map = kbdData;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public boolean isNewKeyboard() {
|
||||
return map.get(KeyboardPickerActivity.KMKEY_INTERNAL_NEW_KEYBOARD)!=null;
|
||||
}
|
||||
|
||||
public String getResourceId() {
|
||||
return this.map.get(KMManager.KMKey_KeyboardID);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@
|
|||
<string name="keyboard_version" translatable="false">Keyboard version</string>
|
||||
<string name="help_link" translatable="false">Help link</string>
|
||||
<string name="uninstall_keyboard" translatable="false">Uninstall keyboard</string>
|
||||
<string name="keyboard_picker_new_keyboard_prefix" translatable="false">[new]</string>
|
||||
|
||||
<!-- Model Updates -->
|
||||
<string name="getting_model_catalog" translatable="false">Getting dictionary catalog.\nThis may take a while…</string>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue