Skip to content

Commit

Permalink
Added: Add log level setting in Termux Settings for termux-widget
Browse files Browse the repository at this point in the history
  • Loading branch information
agnostic-apollo committed Sep 4, 2021
1 parent d5ffb11 commit 4953b12
Show file tree
Hide file tree
Showing 7 changed files with 197 additions and 0 deletions.
11 changes: 11 additions & 0 deletions app/src/main/java/com/termux/app/activities/SettingsActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
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.settings.preferences.TermuxWidgetAppSharedPreferences;
import com.termux.shared.termux.AndroidUtils;
import com.termux.shared.termux.TermuxConstants;
import com.termux.shared.termux.TermuxUtils;
Expand Down Expand Up @@ -60,6 +61,7 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
configureTermuxAPIPreference(context);
configureTermuxFloatPreference(context);
configureTermuxTaskerPreference(context);
configureTermuxWidgetPreference(context);
configureAboutPreference(context);
configureDonatePreference(context);
}
Expand Down Expand Up @@ -91,6 +93,15 @@ private void configureTermuxTaskerPreference(@NonNull Context context) {
}
}

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) {
Preference aboutPreference = findPreference("about");
if (aboutPreference != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}

}
Original file line number Diff line number Diff line change
@@ -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;
}
}

}
6 changes: 6 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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 -->
<string name="about_preference_title">About</string>

Expand Down
7 changes: 7 additions & 0 deletions app/src/main/res/xml/root_preferences.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,13 @@
app:isPreferenceVisible="false"
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
app:key="about"
app:title="@string/about_preference_title"
Expand Down
15 changes: 15 additions & 0 deletions app/src/main/res/xml/termux_widget_debugging_preferences.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<PreferenceScreen xmlns:app="http:https://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 changes: 8 additions & 0 deletions app/src/main/res/xml/termux_widget_preferences.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<PreferenceScreen xmlns:app="http:https://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>

0 comments on commit 4953b12

Please sign in to comment.