mirror of
https://github.com/fankes/termux-app.git
synced 2025-09-07 03:05:18 +08:00
Added: Add log level setting in Termux Settings for termux-widget
This commit is contained in:
@@ -20,6 +20,7 @@ import com.termux.shared.packages.PackageUtils;
|
|||||||
import com.termux.shared.settings.preferences.TermuxAPIAppSharedPreferences;
|
import com.termux.shared.settings.preferences.TermuxAPIAppSharedPreferences;
|
||||||
import com.termux.shared.settings.preferences.TermuxFloatAppSharedPreferences;
|
import com.termux.shared.settings.preferences.TermuxFloatAppSharedPreferences;
|
||||||
import com.termux.shared.settings.preferences.TermuxTaskerAppSharedPreferences;
|
import com.termux.shared.settings.preferences.TermuxTaskerAppSharedPreferences;
|
||||||
|
import com.termux.shared.settings.preferences.TermuxWidgetAppSharedPreferences;
|
||||||
import com.termux.shared.termux.AndroidUtils;
|
import com.termux.shared.termux.AndroidUtils;
|
||||||
import com.termux.shared.termux.TermuxConstants;
|
import com.termux.shared.termux.TermuxConstants;
|
||||||
import com.termux.shared.termux.TermuxUtils;
|
import com.termux.shared.termux.TermuxUtils;
|
||||||
@@ -60,6 +61,7 @@ public class SettingsActivity extends AppCompatActivity {
|
|||||||
configureTermuxAPIPreference(context);
|
configureTermuxAPIPreference(context);
|
||||||
configureTermuxFloatPreference(context);
|
configureTermuxFloatPreference(context);
|
||||||
configureTermuxTaskerPreference(context);
|
configureTermuxTaskerPreference(context);
|
||||||
|
configureTermuxWidgetPreference(context);
|
||||||
configureAboutPreference(context);
|
configureAboutPreference(context);
|
||||||
configureDonatePreference(context);
|
configureDonatePreference(context);
|
||||||
}
|
}
|
||||||
@@ -91,6 +93,15 @@ public class SettingsActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void configureTermuxWidgetPreference(@NonNull Context context) {
|
||||||
|
Preference termuxWidgetPreference = findPreference("termux_widget");
|
||||||
|
if (termuxWidgetPreference != null) {
|
||||||
|
TermuxWidgetAppSharedPreferences preferences = TermuxWidgetAppSharedPreferences.build(context, false);
|
||||||
|
// If failed to get app preferences, then likely app is not installed, so do not show its preference
|
||||||
|
termuxWidgetPreference.setVisible(preferences != null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void configureAboutPreference(@NonNull Context context) {
|
private void configureAboutPreference(@NonNull Context context) {
|
||||||
Preference aboutPreference = findPreference("about");
|
Preference aboutPreference = findPreference("about");
|
||||||
if (aboutPreference != null) {
|
if (aboutPreference != null) {
|
||||||
|
@@ -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.TermuxWidgetAppSharedPreferences;
|
||||||
|
|
||||||
|
@Keep
|
||||||
|
public class TermuxWidgetPreferencesFragment extends PreferenceFragmentCompat {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||||
|
Context context = getContext();
|
||||||
|
if (context == null) return;
|
||||||
|
|
||||||
|
PreferenceManager preferenceManager = getPreferenceManager();
|
||||||
|
preferenceManager.setPreferenceDataStore(TermuxWidgetPreferencesDataStore.getInstance(context));
|
||||||
|
|
||||||
|
setPreferencesFromResource(R.xml.termux_widget_preferences, rootKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class TermuxWidgetPreferencesDataStore extends PreferenceDataStore {
|
||||||
|
|
||||||
|
private final Context mContext;
|
||||||
|
private final TermuxWidgetAppSharedPreferences mPreferences;
|
||||||
|
|
||||||
|
private static TermuxWidgetPreferencesDataStore mInstance;
|
||||||
|
|
||||||
|
private TermuxWidgetPreferencesDataStore(Context context) {
|
||||||
|
mContext = context;
|
||||||
|
mPreferences = TermuxWidgetAppSharedPreferences.build(context, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static synchronized TermuxWidgetPreferencesDataStore getInstance(Context context) {
|
||||||
|
if (mInstance == null) {
|
||||||
|
mInstance = new TermuxWidgetPreferencesDataStore(context);
|
||||||
|
}
|
||||||
|
return mInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,101 @@
|
|||||||
|
package com.termux.app.fragments.settings.termux_widget;
|
||||||
|
|
||||||
|
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.TermuxWidgetAppSharedPreferences;
|
||||||
|
|
||||||
|
@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_widget_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) {
|
||||||
|
TermuxWidgetAppSharedPreferences preferences = TermuxWidgetAppSharedPreferences.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 TermuxWidgetAppSharedPreferences mPreferences;
|
||||||
|
|
||||||
|
private static DebuggingPreferencesDataStore mInstance;
|
||||||
|
|
||||||
|
private DebuggingPreferencesDataStore(Context context) {
|
||||||
|
mContext = context;
|
||||||
|
mPreferences = TermuxWidgetAppSharedPreferences.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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -211,6 +211,12 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Termux Widget App Preferences -->
|
||||||
|
<string name="termux_widget_preferences_title">&TERMUX_WIDGET_APP_NAME;</string>
|
||||||
|
<string name="termux_widget_preferences_summary">Preferences for &TERMUX_WIDGET_APP_NAME; app</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- About Preference -->
|
<!-- About Preference -->
|
||||||
<string name="about_preference_title">About</string>
|
<string name="about_preference_title">About</string>
|
||||||
|
|
||||||
|
@@ -27,6 +27,13 @@
|
|||||||
app:isPreferenceVisible="false"
|
app:isPreferenceVisible="false"
|
||||||
app:fragment="com.termux.app.fragments.settings.TermuxTaskerPreferencesFragment"/>
|
app:fragment="com.termux.app.fragments.settings.TermuxTaskerPreferencesFragment"/>
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
app:key="termux_widget"
|
||||||
|
app:title="@string/termux_widget_preferences_title"
|
||||||
|
app:summary="@string/termux_widget_preferences_summary"
|
||||||
|
app:isPreferenceVisible="false"
|
||||||
|
app:fragment="com.termux.app.fragments.settings.TermuxWidgetPreferencesFragment"/>
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
app:key="about"
|
app:key="about"
|
||||||
app:title="@string/about_preference_title"
|
app:title="@string/about_preference_title"
|
||||||
|
15
app/src/main/res/xml/termux_widget_debugging_preferences.xml
Normal file
15
app/src/main/res/xml/termux_widget_debugging_preferences.xml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<PreferenceCategory
|
||||||
|
app:key="logging"
|
||||||
|
app:title="@string/termux_logging_header">
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
app:defaultValue="1"
|
||||||
|
app:key="log_level"
|
||||||
|
app:title="@string/termux_log_level_title"
|
||||||
|
app:useSimpleSummaryProvider="true" />
|
||||||
|
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
</PreferenceScreen>
|
8
app/src/main/res/xml/termux_widget_preferences.xml
Normal file
8
app/src/main/res/xml/termux_widget_preferences.xml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
app:title="@string/termux_debugging_preferences_title"
|
||||||
|
app:summary="@string/termux_debugging_preferences_summary"
|
||||||
|
app:fragment="com.termux.app.fragments.settings.termux_widget.DebuggingPreferencesFragment"/>
|
||||||
|
|
||||||
|
</PreferenceScreen>
|
Reference in New Issue
Block a user