feat[android]: new keyboard marker

This commit is contained in:
Sandra Forberger 2019-11-04 17:08:21 +07:00
parent 8b65f6bd5c
commit d6de9e3afd
7 changed files with 91 additions and 36 deletions

View file

@ -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 {

View file

@ -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);

View file

@ -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();
}

View file

@ -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) {

View file

@ -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();

View file

@ -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);
}

View file

@ -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&#8230;</string>