diff --git a/app/src/main/java/com/termux/app/activities/SettingsActivity.java b/app/src/main/java/com/termux/app/activities/SettingsActivity.java
index 3997eacb..2e8121eb 100644
--- a/app/src/main/java/com/termux/app/activities/SettingsActivity.java
+++ b/app/src/main/java/com/termux/app/activities/SettingsActivity.java
@@ -18,6 +18,7 @@ import com.termux.app.models.UserAction;
import com.termux.shared.interact.ShareUtils;
import com.termux.shared.packages.PackageUtils;
import com.termux.shared.settings.preferences.TermuxAPIAppSharedPreferences;
+import com.termux.shared.settings.preferences.TermuxFloatAppSharedPreferences;
import com.termux.shared.settings.preferences.TermuxTaskerAppSharedPreferences;
import com.termux.shared.termux.AndroidUtils;
import com.termux.shared.termux.TermuxConstants;
@@ -57,6 +58,7 @@ public class SettingsActivity extends AppCompatActivity {
setPreferencesFromResource(R.xml.root_preferences, rootKey);
configureTermuxAPIPreference(context);
+ configureTermuxFloatPreference(context);
configureTermuxTaskerPreference(context);
configureAboutPreference(context);
configureDonatePreference(context);
@@ -71,6 +73,15 @@ public class SettingsActivity extends AppCompatActivity {
}
}
+ private void configureTermuxFloatPreference(@NonNull Context context) {
+ Preference termuxFloatPreference = findPreference("termux_float");
+ if (termuxFloatPreference != null) {
+ TermuxFloatAppSharedPreferences preferences = TermuxFloatAppSharedPreferences.build(context, false);
+ // If failed to get app preferences, then likely app is not installed, so do not show its preference
+ termuxFloatPreference.setVisible(preferences != null);
+ }
+ }
+
private void configureTermuxTaskerPreference(@NonNull Context context) {
Preference termuxTaskerPreference = findPreference("termux_tasker");
if (termuxTaskerPreference != null) {
diff --git a/app/src/main/java/com/termux/app/fragments/settings/TermuxFloatPreferencesFragment.java b/app/src/main/java/com/termux/app/fragments/settings/TermuxFloatPreferencesFragment.java
new file mode 100644
index 00000000..ee0bacb4
--- /dev/null
+++ b/app/src/main/java/com/termux/app/fragments/settings/TermuxFloatPreferencesFragment.java
@@ -0,0 +1,49 @@
+package com.termux.app.fragments.settings;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.Keep;
+import androidx.preference.PreferenceDataStore;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceManager;
+
+import com.termux.R;
+import com.termux.shared.settings.preferences.TermuxFloatAppSharedPreferences;
+
+@Keep
+public class TermuxFloatPreferencesFragment extends PreferenceFragmentCompat {
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ Context context = getContext();
+ if (context == null) return;
+
+ PreferenceManager preferenceManager = getPreferenceManager();
+ preferenceManager.setPreferenceDataStore(TermuxFloatPreferencesDataStore.getInstance(context));
+
+ setPreferencesFromResource(R.xml.termux_float_preferences, rootKey);
+ }
+
+}
+
+class TermuxFloatPreferencesDataStore extends PreferenceDataStore {
+
+ private final Context mContext;
+ private final TermuxFloatAppSharedPreferences mPreferences;
+
+ private static TermuxFloatPreferencesDataStore mInstance;
+
+ private TermuxFloatPreferencesDataStore(Context context) {
+ mContext = context;
+ mPreferences = TermuxFloatAppSharedPreferences.build(context, true);
+ }
+
+ public static synchronized TermuxFloatPreferencesDataStore getInstance(Context context) {
+ if (mInstance == null) {
+ mInstance = new TermuxFloatPreferencesDataStore(context);
+ }
+ return mInstance;
+ }
+
+}
diff --git a/app/src/main/java/com/termux/app/fragments/settings/termux_float/DebuggingPreferencesFragment.java b/app/src/main/java/com/termux/app/fragments/settings/termux_float/DebuggingPreferencesFragment.java
new file mode 100644
index 00000000..a52f7857
--- /dev/null
+++ b/app/src/main/java/com/termux/app/fragments/settings/termux_float/DebuggingPreferencesFragment.java
@@ -0,0 +1,126 @@
+package com.termux.app.fragments.settings.termux_float;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.Keep;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.ListPreference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceDataStore;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceManager;
+
+import com.termux.R;
+import com.termux.shared.settings.preferences.TermuxFloatAppSharedPreferences;
+
+@Keep
+public class DebuggingPreferencesFragment extends PreferenceFragmentCompat {
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ Context context = getContext();
+ if (context == null) return;
+
+ PreferenceManager preferenceManager = getPreferenceManager();
+ preferenceManager.setPreferenceDataStore(DebuggingPreferencesDataStore.getInstance(context));
+
+ setPreferencesFromResource(R.xml.termux_float_debugging_preferences, rootKey);
+
+ configureLoggingPreferences(context);
+ }
+
+ private void configureLoggingPreferences(@NonNull Context context) {
+ PreferenceCategory loggingCategory = findPreference("logging");
+ if (loggingCategory == null) return;
+
+ ListPreference logLevelListPreference = findPreference("log_level");
+ if (logLevelListPreference != null) {
+ TermuxFloatAppSharedPreferences preferences = TermuxFloatAppSharedPreferences.build(context, true);
+ if (preferences == null) return;
+
+ com.termux.app.fragments.settings.termux.DebuggingPreferencesFragment.
+ setLogLevelListPreferenceData(logLevelListPreference, context, preferences.getLogLevel(true));
+ loggingCategory.addPreference(logLevelListPreference);
+ }
+ }
+}
+
+class DebuggingPreferencesDataStore extends PreferenceDataStore {
+
+ private final Context mContext;
+ private final TermuxFloatAppSharedPreferences mPreferences;
+
+ private static DebuggingPreferencesDataStore mInstance;
+
+ private DebuggingPreferencesDataStore(Context context) {
+ mContext = context;
+ mPreferences = TermuxFloatAppSharedPreferences.build(context, true);
+ }
+
+ public static synchronized DebuggingPreferencesDataStore getInstance(Context context) {
+ if (mInstance == null) {
+ mInstance = new DebuggingPreferencesDataStore(context);
+ }
+ return mInstance;
+ }
+
+
+
+ @Override
+ @Nullable
+ public String getString(String key, @Nullable String defValue) {
+ if (mPreferences == null) return null;
+ if (key == null) return null;
+
+ switch (key) {
+ case "log_level":
+ return String.valueOf(mPreferences.getLogLevel(true));
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public void putString(String key, @Nullable String value) {
+ if (mPreferences == null) return;
+ if (key == null) return;
+
+ switch (key) {
+ case "log_level":
+ if (value != null) {
+ mPreferences.setLogLevel(mContext, Integer.parseInt(value), true);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ @Override
+ public void putBoolean(String key, boolean value) {
+ if (mPreferences == null) return;
+ if (key == null) return;
+
+ switch (key) {
+ case "terminal_view_key_logging_enabled":
+ mPreferences.setTerminalViewKeyLoggingEnabled(value, true);
+ break;
+ default:
+ break;
+ }
+ }
+
+ @Override
+ public boolean getBoolean(String key, boolean defValue) {
+ if (mPreferences == null) return false;
+ switch (key) {
+ case "terminal_view_key_logging_enabled":
+ return mPreferences.isTerminalViewKeyLoggingEnabled(true);
+ default:
+ return false;
+ }
+ }
+
+}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2fb9e5a0..d60cd374 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -189,6 +189,12 @@
+
+ &TERMUX_FLOAT_APP_NAME;
+ Preferences for &TERMUX_FLOAT_APP_NAME; app
+
+
+
&TERMUX_TASKER_APP_NAME;
Preferences for &TERMUX_TASKER_APP_NAME; app
diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml
index b625198b..31b657a2 100644
--- a/app/src/main/res/xml/root_preferences.xml
+++ b/app/src/main/res/xml/root_preferences.xml
@@ -13,6 +13,13 @@
app:isPreferenceVisible="false"
app:fragment="com.termux.app.fragments.settings.TermuxAPIPreferencesFragment"/>
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/termux_float_preferences.xml b/app/src/main/res/xml/termux_float_preferences.xml
new file mode 100644
index 00000000..9378ae1b
--- /dev/null
+++ b/app/src/main/res/xml/termux_float_preferences.xml
@@ -0,0 +1,8 @@
+
+
+
+
+