Skip to content

Commit

Permalink
[FI4] Добавлена поддержка JS патчей к JSON с возможностью отключать ч…
Browse files Browse the repository at this point in the history
…ерез настройки

[JS] Добавлены новые JS патчи, переименованы старые
[BUGFIX] Key0 + свайп по клавиатуре переключал раскладку
  • Loading branch information
tim-ecoder committed Nov 20, 2024
1 parent ce11925 commit efe6eae
Show file tree
Hide file tree
Showing 23 changed files with 305 additions and 292 deletions.
2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ android {
// В номере билда build X.Y X<10 Y<10
// иначе versionCode станет пятизначным, возврат потом к 4 знакам потребует сносить приложение т.к. ОС не дает откатывать
versionCode 2607
versionName "v2.7b21-jsp2-osk4-ts1-cp1-tgh1-sp1-ckp3-cc1-nm2-sel1-uht1"
versionName "v2.7b31-jsp3-osk4-ts1-cp1-tgh1-sp1-ckp4-cc1-nm2-sel1-uht1"
//TODO: ----------------------------

/**
Expand Down
160 changes: 62 additions & 98 deletions app/src/main/java/com/sateda/keyonekb2/ActivitySettingsMore.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@
import android.os.Bundle;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.util.TypedValue;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.*;

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

import static com.sateda.keyonekb2.ActivitySettings.REQUEST_PERMISSION_CODE;
import static com.sateda.keyonekb2.KeyboardLayoutManager.Instance;
Expand All @@ -26,6 +27,8 @@ public class ActivitySettingsMore extends Activity {
Button btSavePluginData;
Button btn_sys_kb_accessibility_setting;

private RelativeLayout layout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand All @@ -44,20 +47,6 @@ public void onClick(View view) {

btSavePluginData = (Button)findViewById(R.id.pref_more_bt_save_search_plugins);


Button btClear = (Button)findViewById(R.id.pref_more_bt_clear);
btClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
KeyoneKb2AccessibilityService.TEMP_ADDED_SEARCH_CLICK_PLUGINS.clear();
for (SearchClickPlugin plugin : KeyoneKb2AccessibilityService.Instance.searchClickPlugins) {
plugin.setId("");
KeyoneKb2AccessibilityService.Instance.ClearFromSettings(plugin);
}
SetTextPluginData();
}
});

btn_sys_kb_accessibility_setting = (Button) findViewById(R.id.btn_sys_kb_accessibility_setting);
btn_sys_kb_accessibility_setting.setOnClickListener(new View.OnClickListener() {
@Override
Expand All @@ -70,6 +59,62 @@ public void onClick(View view) {

RedrawViewData();

List<String> patches = new ArrayList<>();
for (List<String> value: FileJsonUtils.JsPatchesMap.values())
{
patches.addAll(value);
}

if(patches.size() == 0)
return;

layout = (RelativeLayout) findViewById(R.id.activity_more_settings);

Switch defaultJsPatch = (Switch) findViewById(R.id.default_js_patch);
defaultJsPatch.setVisibility(View.VISIBLE);

int prevId = 0;

for (String jsPatch: patches ) {
Switch jsPatchSwitch;
//Первый язык будет по умолчанию всегда активирован
//Плюс на уровне загрузчика клав, будет хард код, чтобы первая клава всегда была сразу после установки
if(prevId == 0) {
jsPatchSwitch = defaultJsPatch;
RelativeLayout.LayoutParams llp = (RelativeLayout.LayoutParams)defaultJsPatch.getLayoutParams();
RelativeLayout.LayoutParams llp2 = new RelativeLayout.LayoutParams(llp);
jsPatchSwitch.setLayoutParams(llp2);
prevId = jsPatchSwitch.getId();


} else {
jsPatchSwitch = new Switch(this);
RelativeLayout.LayoutParams llp = (RelativeLayout.LayoutParams)defaultJsPatch.getLayoutParams();
RelativeLayout.LayoutParams llp2 = new RelativeLayout.LayoutParams(llp);
jsPatchSwitch.setLayoutParams(llp2);

llp2.addRule(RelativeLayout.BELOW, prevId);
prevId = View.generateViewId();
jsPatchSwitch.setId(prevId);
jsPatchSwitch.setTextSize(TypedValue.COMPLEX_UNIT_PX, defaultJsPatch.getTextSize());
layout.addView(jsPatchSwitch);

}

keyoneKb2Settings.CheckSettingOrSetDefault(jsPatch, keyoneKb2Settings.JS_PATCH_IS_ENABLED_DEFAULT);
boolean enabled = keyoneKb2Settings.GetBooleanValue(jsPatch);
jsPatchSwitch.setChecked(enabled);
jsPatchSwitch.setText(jsPatch);

jsPatchSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
keyoneKb2Settings.SetBooleanValue(jsPatch, isChecked);
}
});

}


}

Expand Down Expand Up @@ -112,65 +157,9 @@ private void RedrawViewData() {
});
}

if(KeyoneIME.Instance != null && KeyoneIME.Instance.PackageHistory.size() > 0) {
int i = 0;
for (String packageName : KeyoneIME.Instance.PackageHistory) {
i++;
if(i == 1) InitAddPluginButton(packageName, findViewById(R.id.pref_more_bt_add_plugin3));
else if(i == 2) InitAddPluginButton(packageName, findViewById(R.id.pref_more_bt_add_plugin2));
else if(i == 3) InitAddPluginButton(packageName, findViewById(R.id.pref_more_bt_add_plugin1));
}
}

UpdateAccessibilityButton();
SetTextPluginData();
}

private void InitAddPluginButton(String packageName, Button btAddPlugin) {
if(packageName == null || packageName.isEmpty())
return;
boolean isAdded = false;
if(KeyoneKb2AccessibilityService.Instance == null)
return;
for(SearchClickPlugin searchClickPlugin : KeyoneKb2AccessibilityService.Instance.searchClickPlugins) {
if(packageName.contains(searchClickPlugin.getPartiallyPackageName())) {
isAdded = true;
break;
}
}

if(!isAdded) {
btAddPlugin.setEnabled(true);
btAddPlugin.setText("ADD PLUGIN: " + packageName);
btAddPlugin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (KeyoneIME.Instance == null) return;
if (packageName.isEmpty()) return;
if (KeyoneKb2AccessibilityService.Instance == null) return;
SearchClickPlugin sp = new SearchClickPlugin(packageName);
sp.setEvents(KeyoneKb2AccessibilityService.STD_EVENTS | AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
KeyoneKb2AccessibilityService.TEMP_ADDED_SEARCH_CLICK_PLUGINS.add(sp);
btAddPlugin.setText("ADDED: " + packageName);
btAddPlugin.setEnabled(false);
ShowToast("Application added. Accessibility service automatic stopped. Need start manually.");
KeyoneKb2AccessibilityService.Instance.StopService();
UpdateAccessibilityButton();
}
});
} else {
btAddPlugin.setText("PLUGIN EXISTS: " + packageName);
btAddPlugin.setEnabled(false);
btAddPlugin.setOnClickListener(null);
}
}

private void ShowToast(String text) {
Toast toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG);
toast.show();
}


private void SavePluginData() {

if(KeyoneKb2AccessibilityService.Instance == null) {
Expand Down Expand Up @@ -239,31 +228,6 @@ private void SaveSearchClickPluginData(ArrayList<String> defaultSearchWords, Arr
}
}

private void SetTextPluginData() {
TextView textView = (TextView)findViewById(R.id.tv_search_plugins_data);
textView.setText(R.string.pref_more_tv_search_plugins_comment);
if(KeyoneKb2AccessibilityService.Instance == null) {
textView.append(getString(R.string.pref_more_tv_search_plugins_comment_not_active));
return;
}
String text_data = "";
for(SearchClickPlugin plugin : KeyoneKb2AccessibilityService.Instance.searchClickPlugins) {
String value = plugin.getId();
if(value.isEmpty()) {
if(plugin.DynamicSearchMethod != null && plugin.DynamicSearchMethod.size() == 1)
value = getString(R.string.pref_more_tv_single_plugin_data2)+
" SearchFunction: "+plugin.DynamicSearchMethod.get(0).DynamicSearchMethodFunction+
" SearchWord: "+plugin.DynamicSearchMethod.get(0).ContainsString;
else
value = getString(R.string.pref_more_tv_single_plugin_data);
}
text_data += String.format("Application:\n%s\nResourceId:\n%s\n\n", plugin.getPartiallyPackageName(), value);
}

textView.append(text_data);
}


private void SaveResFiles() {
String path = "NOT SAVED";

Expand Down
Loading

0 comments on commit efe6eae

Please sign in to comment.