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 +