diff --git a/android/KMAPro/kMAPro/build.gradle b/android/KMAPro/kMAPro/build.gradle
index 6c11e6db39..708694e9b3 100644
--- a/android/KMAPro/kMAPro/build.gradle
+++ b/android/KMAPro/kMAPro/build.gradle
@@ -109,6 +109,7 @@ dependencies {
implementation('com.crashlytics.sdk.android:crashlytics:2.9.9@aar') {
transitive = true
}
+ implementation 'androidx.preference:preference:1.1.0-alpha04'
}
/*
diff --git a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml
index 217124a114..9052f4bbd9 100644
--- a/android/KMAPro/kMAPro/src/main/AndroidManifest.xml
+++ b/android/KMAPro/kMAPro/src/main/AndroidManifest.xml
@@ -1,91 +1,89 @@
+ package="com.tavultesoft.kmapro">
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
+
-
+
+
+
-
-
-
-
-
-
+
+
+
+
-
+
-
-
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/GetStartedActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/GetStartedActivity.java
index 9872b4d8d1..aa08c9994f 100644
--- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/GetStartedActivity.java
+++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/GetStartedActivity.java
@@ -32,6 +32,7 @@ public class GetStartedActivity extends AppCompatActivity {
private static ListView listView = null;
private static ArrayList> list = null;
private static KMListAdapter listAdapter = null;
+ protected static final String showGetStartedKey = "ShowGetStarted";
private final String iconKey = "icon";
private final String textKey = "text";
private final String isEnabledKey = "isEnabled";
@@ -53,15 +54,15 @@ public class GetStartedActivity extends AppCompatActivity {
});
final SharedPreferences prefs = getSharedPreferences(getString(R.string.kma_prefs_name), Context.MODE_PRIVATE);
- boolean dontShowGetStarted = prefs.getBoolean(MainActivity.dontShowGetStartedKey, false);
+ boolean showGetStarted = prefs.getBoolean(showGetStartedKey, true);
final CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox);
- checkBox.setChecked(dontShowGetStarted);
+ checkBox.setChecked(showGetStarted);
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPreferences.Editor editor = prefs.edit();
- editor.putBoolean(MainActivity.dontShowGetStartedKey, isChecked);
+ editor.putBoolean(showGetStartedKey, isChecked);
editor.commit();
}
});
diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsActivity.java
new file mode 100644
index 0000000000..3ca4a66a11
--- /dev/null
+++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsActivity.java
@@ -0,0 +1,26 @@
+package com.tavultesoft.kmapro;
+
+import android.os.Bundle;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+
+public class KeymanSettingsActivity extends AppCompatActivity {
+ protected static final String installedLanguagesKey = "InstalledLanguages";
+ protected static final String showBannerKey = "ShowBanner";
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.keyman_settings_layout);
+ Toolbar toolbar = (Toolbar) findViewById(R.id.keyman_settings_toolbar);
+ toolbar.setTitleTextColor(getResources().getColor(android.R.color.white));
+ setSupportActionBar(toolbar);
+ if (getSupportActionBar() != null) {
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ getSupportActionBar().setDisplayShowHomeEnabled(true);
+ getSupportActionBar().setDisplayShowTitleEnabled(true);
+ }
+ }
+}
diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java
new file mode 100644
index 0000000000..4623de07dd
--- /dev/null
+++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/KeymanSettingsFragment.java
@@ -0,0 +1,57 @@
+package com.tavultesoft.kmapro;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreference;
+
+import com.tavultesoft.kmea.KMManager;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+public class KeymanSettingsFragment extends PreferenceFragmentCompat {
+ private static final String TAG = "SettingsFragment";
+ private static Context context;
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ context = getActivity();
+ PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(context);
+
+ // Set the filename so this Fragment uses the common preferences file as other Activities
+ getPreferenceManager().setSharedPreferencesName(getString(R.string.kma_prefs_name));
+
+ Preference languagesPreference = new Preference(context);
+ ArrayList> kbList = KMManager.getKeyboardsList(context);
+ String keyboardCount = (kbList != null && kbList.size() > 1) ?
+ String.format(" (%d)", kbList.size()) : "";
+ languagesPreference.setKey(KeymanSettingsActivity.installedLanguagesKey);
+ languagesPreference.setTitle(getString(R.string.installed_languages) + keyboardCount);
+ languagesPreference.setWidgetLayoutResource(R.layout.preference_icon_layout);
+ Intent languagesIntent = new Intent();
+ languagesIntent.setClassName(context.getPackageName(), "com.tavultesoft.kmea.KeyboardPickerActivity");
+ languagesIntent.putExtra(KMManager.KMKey_DisplayKeyboardSwitcher, false);
+ languagesPreference.setIntent(languagesIntent);
+
+ SwitchPreference bannerPreference = new SwitchPreference(context);
+ bannerPreference.setKey(KeymanSettingsActivity.showBannerKey);
+ bannerPreference.setTitle(getString(R.string.show_banner));
+ bannerPreference.setSummaryOn(getString(R.string.show_banner_on));
+
+ SwitchPreference getStartedPreference = new SwitchPreference(context);
+ getStartedPreference.setKey(GetStartedActivity.showGetStartedKey);
+ getStartedPreference.setTitle(getString(R.string.show_get_started));
+ getStartedPreference.setDefaultValue(true);
+
+ screen.addPreference(languagesPreference);
+ screen.addPreference(bannerPreference);
+ screen.addPreference(getStartedPreference);
+
+ setPreferenceScreen(screen);
+ }
+}
diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java
index 47c295774f..02508bbe92 100644
--- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java
+++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java
@@ -90,7 +90,6 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi
private int textSize = minTextSize;
private static final String userTextKey = "UserText";
private static final String userTextSizeKey = "UserTextSize";
- protected static final String dontShowGetStartedKey = "DontShowGetStarted";
protected static final String didCheckUserDataKey = "DidCheckUserData";
private Toolbar toolbar;
private Menu menu;
@@ -383,6 +382,9 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi
case R.id.action_get_started:
showGetStarted();
return true;
+ case R.id.action_settings:
+ showSettings();
+ return true;
default:
return super.onOptionsItemSelected(item);
}
@@ -593,8 +595,8 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi
private void checkGetStarted() {
SharedPreferences prefs = getSharedPreferences(getString(R.string.kma_prefs_name), Context.MODE_PRIVATE);
- boolean dontShowGetStarted = prefs.getBoolean(MainActivity.dontShowGetStartedKey, false);
- if (!dontShowGetStarted) {
+ boolean showGetStarted = prefs.getBoolean(GetStartedActivity.showGetStartedKey, true);
+ if (showGetStarted) {
boolean shouldShowGetStarted = false;
ArrayList> kbList = KMManager.getKeyboardsList(this);
if (kbList != null && kbList.size() < 2)
@@ -726,6 +728,11 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi
startActivity(getStartedIntent);
}
+ private void showSettings() {
+ Intent settingsIntent = new Intent(this, KeymanSettingsActivity.class);
+ startActivity(settingsIntent);
+ }
+
public static Drawable getActionBarDrawable(Context context) {
Point size = new Point();
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
diff --git a/android/KMAPro/kMAPro/src/main/res/drawable-hdpi/ic_settings.png b/android/KMAPro/kMAPro/src/main/res/drawable-hdpi/ic_settings.png
new file mode 100644
index 0000000000..acf1ddf85b
Binary files /dev/null and b/android/KMAPro/kMAPro/src/main/res/drawable-hdpi/ic_settings.png differ
diff --git a/android/KMAPro/kMAPro/src/main/res/drawable-mdpi/ic_settings.png b/android/KMAPro/kMAPro/src/main/res/drawable-mdpi/ic_settings.png
new file mode 100644
index 0000000000..acf1ddf85b
Binary files /dev/null and b/android/KMAPro/kMAPro/src/main/res/drawable-mdpi/ic_settings.png differ
diff --git a/android/KMAPro/kMAPro/src/main/res/drawable-xhdpi/ic_settings.png b/android/KMAPro/kMAPro/src/main/res/drawable-xhdpi/ic_settings.png
new file mode 100644
index 0000000000..e84e188a1d
Binary files /dev/null and b/android/KMAPro/kMAPro/src/main/res/drawable-xhdpi/ic_settings.png differ
diff --git a/android/KMAPro/kMAPro/src/main/res/drawable-xxhdpi/ic_settings.png b/android/KMAPro/kMAPro/src/main/res/drawable-xxhdpi/ic_settings.png
new file mode 100644
index 0000000000..5754bf2ada
Binary files /dev/null and b/android/KMAPro/kMAPro/src/main/res/drawable-xxhdpi/ic_settings.png differ
diff --git a/android/KMAPro/kMAPro/src/main/res/drawable-xxxhdpi/ic_settings.png b/android/KMAPro/kMAPro/src/main/res/drawable-xxxhdpi/ic_settings.png
new file mode 100644
index 0000000000..8f2a8bc23a
Binary files /dev/null and b/android/KMAPro/kMAPro/src/main/res/drawable-xxxhdpi/ic_settings.png differ
diff --git a/android/KMAPro/kMAPro/src/main/res/layout/get_started_list_layout.xml b/android/KMAPro/kMAPro/src/main/res/layout/get_started_list_layout.xml
index 4b66a5e62f..b25e20beb7 100644
--- a/android/KMAPro/kMAPro/src/main/res/layout/get_started_list_layout.xml
+++ b/android/KMAPro/kMAPro/src/main/res/layout/get_started_list_layout.xml
@@ -45,7 +45,7 @@
android:layout_marginLeft="@dimen/checkbox_margin_left"
android:layout_marginStart="@dimen/checkbox_margin_left"
android:layout_gravity="center_vertical"
- android:text="@string/dont_show_again" />
+ android:text="@string/show_get_started" />
diff --git a/android/KMAPro/kMAPro/src/main/res/layout/keyman_settings_layout.xml b/android/KMAPro/kMAPro/src/main/res/layout/keyman_settings_layout.xml
new file mode 100644
index 0000000000..edaabd10d7
--- /dev/null
+++ b/android/KMAPro/kMAPro/src/main/res/layout/keyman_settings_layout.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/KMAPro/kMAPro/src/main/res/layout/preference_icon_layout.xml b/android/KMAPro/kMAPro/src/main/res/layout/preference_icon_layout.xml
new file mode 100644
index 0000000000..6aa84ce384
--- /dev/null
+++ b/android/KMAPro/kMAPro/src/main/res/layout/preference_icon_layout.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/android/KMAPro/kMAPro/src/main/res/menu-land/main.xml b/android/KMAPro/kMAPro/src/main/res/menu-land/main.xml
index 5a077c99f4..892a1f24ec 100644
--- a/android/KMAPro/kMAPro/src/main/res/menu-land/main.xml
+++ b/android/KMAPro/kMAPro/src/main/res/menu-land/main.xml
@@ -38,5 +38,11 @@
app:showAsAction="always"
android:title="@string/get_started"
android:icon="@drawable/ic_action_get_started" />
-
+
+
+
diff --git a/android/KMAPro/kMAPro/src/main/res/menu-sw600dp/main.xml b/android/KMAPro/kMAPro/src/main/res/menu-sw600dp/main.xml
index 7263dda253..892a1f24ec 100644
--- a/android/KMAPro/kMAPro/src/main/res/menu-sw600dp/main.xml
+++ b/android/KMAPro/kMAPro/src/main/res/menu-sw600dp/main.xml
@@ -38,5 +38,11 @@
app:showAsAction="always"
android:title="@string/get_started"
android:icon="@drawable/ic_action_get_started" />
-
+
+
+
diff --git a/android/KMAPro/kMAPro/src/main/res/menu/main.xml b/android/KMAPro/kMAPro/src/main/res/menu/main.xml
index ebde4a4174..c2d17e6a38 100644
--- a/android/KMAPro/kMAPro/src/main/res/menu/main.xml
+++ b/android/KMAPro/kMAPro/src/main/res/menu/main.xml
@@ -27,7 +27,7 @@
android:id="@+id/action_text_size"
android:title="@string/action_text_size"
app:showAsAction="never"
- android:icon="@drawable/ic_light_action_textsize"/>
+ android:icon="@drawable/ic_light_action_textsize" />
+
+
+
\ No newline at end of file
diff --git a/android/KMAPro/kMAPro/src/main/res/values-sw600dp/dimens.xml b/android/KMAPro/kMAPro/src/main/res/values-sw600dp/dimens.xml
index e466f62acf..c6ee6f144c 100644
--- a/android/KMAPro/kMAPro/src/main/res/values-sw600dp/dimens.xml
+++ b/android/KMAPro/kMAPro/src/main/res/values-sw600dp/dimens.xml
@@ -10,5 +10,5 @@
18dp
12dp
10dp
-
+ 32dp
diff --git a/android/KMAPro/kMAPro/src/main/res/values-sw720dp-land/dimens.xml b/android/KMAPro/kMAPro/src/main/res/values-sw720dp-land/dimens.xml
index 5d1e6e39ec..6140c8a828 100644
--- a/android/KMAPro/kMAPro/src/main/res/values-sw720dp-land/dimens.xml
+++ b/android/KMAPro/kMAPro/src/main/res/values-sw720dp-land/dimens.xml
@@ -10,5 +10,5 @@
8dp
15dp
10dp
-
+ 32dp
diff --git a/android/KMAPro/kMAPro/src/main/res/values-sw720dp/dimens.xml b/android/KMAPro/kMAPro/src/main/res/values-sw720dp/dimens.xml
index 2436c7dd7b..6a29e9f143 100644
--- a/android/KMAPro/kMAPro/src/main/res/values-sw720dp/dimens.xml
+++ b/android/KMAPro/kMAPro/src/main/res/values-sw720dp/dimens.xml
@@ -11,5 +11,5 @@
8dp
15dp
10dp
-
+ 32dp
diff --git a/android/KMAPro/kMAPro/src/main/res/values-v21/styles.xml b/android/KMAPro/kMAPro/src/main/res/values-v21/styles.xml
index ee37eff14a..57d753e79c 100644
--- a/android/KMAPro/kMAPro/src/main/res/values-v21/styles.xml
+++ b/android/KMAPro/kMAPro/src/main/res/values-v21/styles.xml
@@ -20,6 +20,10 @@
- @style/AppTheme.Dialog
- @style/AppTheme.Dialog.Alert
+ - @style/PreferenceThemeOverlay
+ - false
+ - true
+