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 b4f046b8a4..3997eacb9d 100644 --- a/app/src/main/java/com/termux/app/activities/SettingsActivity.java +++ b/app/src/main/java/com/termux/app/activities/SettingsActivity.java @@ -17,6 +17,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.TermuxTaskerAppSharedPreferences; import com.termux.shared.termux.AndroidUtils; import com.termux.shared.termux.TermuxConstants; @@ -55,17 +56,27 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.root_preferences, rootKey); + configureTermuxAPIPreference(context); configureTermuxTaskerPreference(context); configureAboutPreference(context); configureDonatePreference(context); } + private void configureTermuxAPIPreference(@NonNull Context context) { + Preference termuxAPIPreference = findPreference("termux_api"); + if (termuxAPIPreference != null) { + TermuxAPIAppSharedPreferences preferences = TermuxAPIAppSharedPreferences.build(context, false); + // If failed to get app preferences, then likely app is not installed, so do not show its preference + termuxAPIPreference.setVisible(preferences != null); + } + } + private void configureTermuxTaskerPreference(@NonNull Context context) { - Preference termuxTaskerPrefernce = findPreference("termux_tasker"); - if (termuxTaskerPrefernce != null) { + Preference termuxTaskerPreference = findPreference("termux_tasker"); + if (termuxTaskerPreference != null) { TermuxTaskerAppSharedPreferences preferences = TermuxTaskerAppSharedPreferences.build(context, false); // If failed to get app preferences, then likely app is not installed, so do not show its preference - termuxTaskerPrefernce.setVisible(preferences != null); + termuxTaskerPreference.setVisible(preferences != null); } } diff --git a/app/src/main/java/com/termux/app/fragments/settings/TermuxAPIPreferencesFragment.java b/app/src/main/java/com/termux/app/fragments/settings/TermuxAPIPreferencesFragment.java new file mode 100644 index 0000000000..de8508e97d --- /dev/null +++ b/app/src/main/java/com/termux/app/fragments/settings/TermuxAPIPreferencesFragment.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.TermuxAPIAppSharedPreferences; + +@Keep +public class TermuxAPIPreferencesFragment extends PreferenceFragmentCompat { + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + Context context = getContext(); + if (context == null) return; + + PreferenceManager preferenceManager = getPreferenceManager(); + preferenceManager.setPreferenceDataStore(TermuxAPIPreferencesDataStore.getInstance(context)); + + setPreferencesFromResource(R.xml.termux_api_preferences, rootKey); + } + +} + +class TermuxAPIPreferencesDataStore extends PreferenceDataStore { + + private final Context mContext; + private final TermuxAPIAppSharedPreferences mPreferences; + + private static TermuxAPIPreferencesDataStore mInstance; + + private TermuxAPIPreferencesDataStore(Context context) { + mContext = context; + mPreferences = TermuxAPIAppSharedPreferences.build(context, true); + } + + public static synchronized TermuxAPIPreferencesDataStore getInstance(Context context) { + if (mInstance == null) { + mInstance = new TermuxAPIPreferencesDataStore(context); + } + return mInstance; + } + +} diff --git a/app/src/main/java/com/termux/app/fragments/settings/termux_api/DebuggingPreferencesFragment.java b/app/src/main/java/com/termux/app/fragments/settings/termux_api/DebuggingPreferencesFragment.java new file mode 100644 index 0000000000..0a4fee3f1b --- /dev/null +++ b/app/src/main/java/com/termux/app/fragments/settings/termux_api/DebuggingPreferencesFragment.java @@ -0,0 +1,101 @@ +package com.termux.app.fragments.settings.termux_api; + +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.TermuxAPIAppSharedPreferences; + +@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_api_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) { + TermuxAPIAppSharedPreferences preferences = TermuxAPIAppSharedPreferences.build(context, true); + if (preferences == null) return; + + com.termux.app.fragments.settings.termux.DebuggingPreferencesFragment. + setLogLevelListPreferenceData(logLevelListPreference, context, preferences.getLogLevel()); + loggingCategory.addPreference(logLevelListPreference); + } + } +} + +class DebuggingPreferencesDataStore extends PreferenceDataStore { + + private final Context mContext; + private final TermuxAPIAppSharedPreferences mPreferences; + + private static DebuggingPreferencesDataStore mInstance; + + private DebuggingPreferencesDataStore(Context context) { + mContext = context; + mPreferences = TermuxAPIAppSharedPreferences.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()); + 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)); + } + break; + default: + break; + } + } + +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 353da4536f..2fb9e5a0f8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -183,11 +183,18 @@ + + &TERMUX_API_APP_NAME; + Preferences for &TERMUX_API_APP_NAME; app + + + &TERMUX_TASKER_APP_NAME; Preferences for &TERMUX_TASKER_APP_NAME; app + About diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 39c6093ed0..b625198bfa 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -6,6 +6,13 @@ app:summary="@string/termux_preferences_summary" app:fragment="com.termux.app.fragments.settings.TermuxPreferencesFragment"/> + + + + + + + + + + diff --git a/app/src/main/res/xml/termux_api_preferences.xml b/app/src/main/res/xml/termux_api_preferences.xml new file mode 100644 index 0000000000..285ec2cbdc --- /dev/null +++ b/app/src/main/res/xml/termux_api_preferences.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxAPIAppSharedPreferences.java b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxAPIAppSharedPreferences.java new file mode 100644 index 0000000000..7b720ac739 --- /dev/null +++ b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxAPIAppSharedPreferences.java @@ -0,0 +1,79 @@ +package com.termux.shared.settings.preferences; + +import android.app.Activity; +import android.content.Context; +import android.content.SharedPreferences; + +import androidx.annotation.NonNull; + +import com.termux.shared.logger.Logger; +import com.termux.shared.packages.PackageUtils; +import com.termux.shared.settings.preferences.TermuxPreferenceConstants.TERMUX_API_APP; +import com.termux.shared.termux.TermuxConstants; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class TermuxAPIAppSharedPreferences { + + private final Context mContext; + private final SharedPreferences mSharedPreferences; + + + private static final String LOG_TAG = "TermuxAPIAppSharedPreferences"; + + private TermuxAPIAppSharedPreferences(@Nonnull Context context) { + mContext = context; + mSharedPreferences = getPrivateSharedPreferences(mContext); + } + + /** + * Get the {@link Context} for a package name. + * + * @param context The {@link Context} to use to get the {@link Context} of the + * {@link TermuxConstants#TERMUX_API_PACKAGE_NAME}. + * @return Returns the {@link TermuxAPIAppSharedPreferences}. This will {@code null} if an exception is raised. + */ + @Nullable + public static TermuxAPIAppSharedPreferences build(@NonNull final Context context) { + Context termuxTaskerPackageContext = PackageUtils.getContextForPackage(context, TermuxConstants.TERMUX_API_PACKAGE_NAME); + if (termuxTaskerPackageContext == null) + return null; + else + return new TermuxAPIAppSharedPreferences(termuxTaskerPackageContext); + } + + /** + * Get the {@link Context} for a package name. + * + * @param context The {@link Activity} to use to get the {@link Context} of the + * {@link TermuxConstants#TERMUX_API_PACKAGE_NAME}. + * @param exitAppOnError If {@code true} and failed to get package context, then a dialog will + * be shown which when dismissed will exit the app. + * @return Returns the {@link TermuxAPIAppSharedPreferences}. This will {@code null} if an exception is raised. + */ + public static TermuxAPIAppSharedPreferences build(@NonNull final Context context, final boolean exitAppOnError) { + Context termuxTaskerPackageContext = PackageUtils.getContextForPackageOrExitApp(context, TermuxConstants.TERMUX_API_PACKAGE_NAME, exitAppOnError); + if (termuxTaskerPackageContext == null) + return null; + else + return new TermuxAPIAppSharedPreferences(termuxTaskerPackageContext); + } + + private static SharedPreferences getPrivateSharedPreferences(Context context) { + if (context == null) return null; + return SharedPreferenceUtils.getPrivateSharedPreferences(context, TermuxConstants.TERMUX_API_DEFAULT_PREFERENCES_FILE_BASENAME_WITHOUT_EXTENSION); + } + + + + public int getLogLevel() { + return SharedPreferenceUtils.getInt(mSharedPreferences, TERMUX_API_APP.KEY_LOG_LEVEL, Logger.DEFAULT_LOG_LEVEL); + } + + public void setLogLevel(Context context, int logLevel) { + logLevel = Logger.setLogLevel(context, logLevel); + SharedPreferenceUtils.setInt(mSharedPreferences, TERMUX_API_APP.KEY_LOG_LEVEL, logLevel, false); + } + +} diff --git a/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxBootAppSharedPreferences.java b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxBootAppSharedPreferences.java new file mode 100644 index 0000000000..762740c9f7 --- /dev/null +++ b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxBootAppSharedPreferences.java @@ -0,0 +1,79 @@ +package com.termux.shared.settings.preferences; + +import android.app.Activity; +import android.content.Context; +import android.content.SharedPreferences; + +import androidx.annotation.NonNull; + +import com.termux.shared.logger.Logger; +import com.termux.shared.packages.PackageUtils; +import com.termux.shared.settings.preferences.TermuxPreferenceConstants.TERMUX_BOOT_APP; +import com.termux.shared.termux.TermuxConstants; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class TermuxBootAppSharedPreferences { + + private final Context mContext; + private final SharedPreferences mSharedPreferences; + + + private static final String LOG_TAG = "TermuxBootAppSharedPreferences"; + + private TermuxBootAppSharedPreferences(@Nonnull Context context) { + mContext = context; + mSharedPreferences = getPrivateSharedPreferences(mContext); + } + + /** + * Get the {@link Context} for a package name. + * + * @param context The {@link Context} to use to get the {@link Context} of the + * {@link TermuxConstants#TERMUX_BOOT_PACKAGE_NAME}. + * @return Returns the {@link TermuxBootAppSharedPreferences}. This will {@code null} if an exception is raised. + */ + @Nullable + public static TermuxBootAppSharedPreferences build(@NonNull final Context context) { + Context termuxTaskerPackageContext = PackageUtils.getContextForPackage(context, TermuxConstants.TERMUX_BOOT_PACKAGE_NAME); + if (termuxTaskerPackageContext == null) + return null; + else + return new TermuxBootAppSharedPreferences(termuxTaskerPackageContext); + } + + /** + * Get the {@link Context} for a package name. + * + * @param context The {@link Activity} to use to get the {@link Context} of the + * {@link TermuxConstants#TERMUX_BOOT_PACKAGE_NAME}. + * @param exitAppOnError If {@code true} and failed to get package context, then a dialog will + * be shown which when dismissed will exit the app. + * @return Returns the {@link TermuxBootAppSharedPreferences}. This will {@code null} if an exception is raised. + */ + public static TermuxBootAppSharedPreferences build(@NonNull final Context context, final boolean exitAppOnError) { + Context termuxTaskerPackageContext = PackageUtils.getContextForPackageOrExitApp(context, TermuxConstants.TERMUX_BOOT_PACKAGE_NAME, exitAppOnError); + if (termuxTaskerPackageContext == null) + return null; + else + return new TermuxBootAppSharedPreferences(termuxTaskerPackageContext); + } + + private static SharedPreferences getPrivateSharedPreferences(Context context) { + if (context == null) return null; + return SharedPreferenceUtils.getPrivateSharedPreferences(context, TermuxConstants.TERMUX_BOOT_DEFAULT_PREFERENCES_FILE_BASENAME_WITHOUT_EXTENSION); + } + + + + public int getLogLevel() { + return SharedPreferenceUtils.getInt(mSharedPreferences, TERMUX_BOOT_APP.KEY_LOG_LEVEL, Logger.DEFAULT_LOG_LEVEL); + } + + public void setLogLevel(Context context, int logLevel) { + logLevel = Logger.setLogLevel(context, logLevel); + SharedPreferenceUtils.setInt(mSharedPreferences, TERMUX_BOOT_APP.KEY_LOG_LEVEL, logLevel, false); + } + +} diff --git a/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxFloatAppSharedPreferences.java b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxFloatAppSharedPreferences.java new file mode 100644 index 0000000000..93bed91df0 --- /dev/null +++ b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxFloatAppSharedPreferences.java @@ -0,0 +1,79 @@ +package com.termux.shared.settings.preferences; + +import android.app.Activity; +import android.content.Context; +import android.content.SharedPreferences; + +import androidx.annotation.NonNull; + +import com.termux.shared.logger.Logger; +import com.termux.shared.packages.PackageUtils; +import com.termux.shared.settings.preferences.TermuxPreferenceConstants.TERMUX_FLOAT_APP; +import com.termux.shared.termux.TermuxConstants; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class TermuxFloatAppSharedPreferences { + + private final Context mContext; + private final SharedPreferences mSharedPreferences; + + + private static final String LOG_TAG = "TermuxFloatAppSharedPreferences"; + + private TermuxFloatAppSharedPreferences(@Nonnull Context context) { + mContext = context; + mSharedPreferences = getPrivateSharedPreferences(mContext); + } + + /** + * Get the {@link Context} for a package name. + * + * @param context The {@link Context} to use to get the {@link Context} of the + * {@link TermuxConstants#TERMUX_FLOAT_PACKAGE_NAME}. + * @return Returns the {@link TermuxFloatAppSharedPreferences}. This will {@code null} if an exception is raised. + */ + @Nullable + public static TermuxFloatAppSharedPreferences build(@NonNull final Context context) { + Context termuxTaskerPackageContext = PackageUtils.getContextForPackage(context, TermuxConstants.TERMUX_FLOAT_PACKAGE_NAME); + if (termuxTaskerPackageContext == null) + return null; + else + return new TermuxFloatAppSharedPreferences(termuxTaskerPackageContext); + } + + /** + * Get the {@link Context} for a package name. + * + * @param context The {@link Activity} to use to get the {@link Context} of the + * {@link TermuxConstants#TERMUX_FLOAT_PACKAGE_NAME}. + * @param exitAppOnError If {@code true} and failed to get package context, then a dialog will + * be shown which when dismissed will exit the app. + * @return Returns the {@link TermuxFloatAppSharedPreferences}. This will {@code null} if an exception is raised. + */ + public static TermuxFloatAppSharedPreferences build(@NonNull final Context context, final boolean exitAppOnError) { + Context termuxTaskerPackageContext = PackageUtils.getContextForPackageOrExitApp(context, TermuxConstants.TERMUX_FLOAT_PACKAGE_NAME, exitAppOnError); + if (termuxTaskerPackageContext == null) + return null; + else + return new TermuxFloatAppSharedPreferences(termuxTaskerPackageContext); + } + + private static SharedPreferences getPrivateSharedPreferences(Context context) { + if (context == null) return null; + return SharedPreferenceUtils.getPrivateSharedPreferences(context, TermuxConstants.TERMUX_FLOAT_DEFAULT_PREFERENCES_FILE_BASENAME_WITHOUT_EXTENSION); + } + + + + public int getLogLevel() { + return SharedPreferenceUtils.getInt(mSharedPreferences, TERMUX_FLOAT_APP.KEY_LOG_LEVEL, Logger.DEFAULT_LOG_LEVEL); + } + + public void setLogLevel(Context context, int logLevel) { + logLevel = Logger.setLogLevel(context, logLevel); + SharedPreferenceUtils.setInt(mSharedPreferences, TERMUX_FLOAT_APP.KEY_LOG_LEVEL, logLevel, false); + } + +} diff --git a/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxPreferenceConstants.java b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxPreferenceConstants.java index 074aa60232..952eed4005 100644 --- a/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxPreferenceConstants.java +++ b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxPreferenceConstants.java @@ -1,7 +1,7 @@ package com.termux.shared.settings.preferences; /* - * Version: v0.11.0 + * Version: v0.12.0 * * Changelog * @@ -48,6 +48,11 @@ * - 0.11.0 (2021-07-08) * - Added following to `TERMUX_APP`: * `KEY_DISABLE_TERMINAL_MARGIN_ADJUSTMENT`. + * + * - 0.12.0 (2021-08-27) + * - Added `TERMUX_API_APP.KEY_LOG_LEVEL`, `TERMUX_BOOT_APP.KEY_LOG_LEVEL`, + * `TERMUX_FLOAT_APP.KEY_LOG_LEVEL`, `TERMUX_STYLING_APP.KEY_LOG_LEVEL`, + * `TERMUX_Widget_APP.KEY_LOG_LEVEL`. */ /** @@ -115,7 +120,7 @@ public static final class TERMUX_APP { /** - * Defines the key for current termux log level. + * Defines the key for current log level. */ public static final String KEY_LOG_LEVEL = "log_level"; @@ -147,13 +152,85 @@ public static final class TERMUX_APP { } + + + /** + * Termux API app constants. + */ + public static final class TERMUX_API_APP { + + /** + * Defines the key for current log level. + */ + public static final String KEY_LOG_LEVEL = "log_level"; + + } + + + + /** + * Termux Boot app constants. + */ + public static final class TERMUX_BOOT_APP { + + /** + * Defines the key for current log level. + */ + public static final String KEY_LOG_LEVEL = "log_level"; + + } + + + + /** + * Termux Float app constants. + */ + public static final class TERMUX_FLOAT_APP { + + /** + * Defines the key for current log level. + */ + public static final String KEY_LOG_LEVEL = "log_level"; + + } + + + + /** + * Termux Styling app constants. + */ + public static final class TERMUX_STYLING_APP { + + /** + * Defines the key for current log level. + */ + public static final String KEY_LOG_LEVEL = "log_level"; + + } + + + /** * Termux Tasker app constants. */ public static final class TERMUX_TASKER_APP { /** - * Defines the key for current termux log level. + * Defines the key for current log level. + */ + public static final String KEY_LOG_LEVEL = "log_level"; + + } + + + + /** + * Termux Widget app constants. + */ + public static final class TERMUX_WIDGET_APP { + + /** + * Defines the key for current log level. */ public static final String KEY_LOG_LEVEL = "log_level"; diff --git a/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxStylingAppSharedPreferences.java b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxStylingAppSharedPreferences.java new file mode 100644 index 0000000000..df7a975837 --- /dev/null +++ b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxStylingAppSharedPreferences.java @@ -0,0 +1,79 @@ +package com.termux.shared.settings.preferences; + +import android.app.Activity; +import android.content.Context; +import android.content.SharedPreferences; + +import androidx.annotation.NonNull; + +import com.termux.shared.logger.Logger; +import com.termux.shared.packages.PackageUtils; +import com.termux.shared.settings.preferences.TermuxPreferenceConstants.TERMUX_STYLING_APP; +import com.termux.shared.termux.TermuxConstants; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class TermuxStylingAppSharedPreferences { + + private final Context mContext; + private final SharedPreferences mSharedPreferences; + + + private static final String LOG_TAG = "TermuxStylingAppSharedPreferences"; + + private TermuxStylingAppSharedPreferences(@Nonnull Context context) { + mContext = context; + mSharedPreferences = getPrivateSharedPreferences(mContext); + } + + /** + * Get the {@link Context} for a package name. + * + * @param context The {@link Context} to use to get the {@link Context} of the + * {@link TermuxConstants#TERMUX_STYLING_PACKAGE_NAME}. + * @return Returns the {@link TermuxStylingAppSharedPreferences}. This will {@code null} if an exception is raised. + */ + @Nullable + public static TermuxStylingAppSharedPreferences build(@NonNull final Context context) { + Context termuxTaskerPackageContext = PackageUtils.getContextForPackage(context, TermuxConstants.TERMUX_STYLING_PACKAGE_NAME); + if (termuxTaskerPackageContext == null) + return null; + else + return new TermuxStylingAppSharedPreferences(termuxTaskerPackageContext); + } + + /** + * Get the {@link Context} for a package name. + * + * @param context The {@link Activity} to use to get the {@link Context} of the + * {@link TermuxConstants#TERMUX_STYLING_PACKAGE_NAME}. + * @param exitAppOnError If {@code true} and failed to get package context, then a dialog will + * be shown which when dismissed will exit the app. + * @return Returns the {@link TermuxStylingAppSharedPreferences}. This will {@code null} if an exception is raised. + */ + public static TermuxStylingAppSharedPreferences build(@NonNull final Context context, final boolean exitAppOnError) { + Context termuxTaskerPackageContext = PackageUtils.getContextForPackageOrExitApp(context, TermuxConstants.TERMUX_STYLING_PACKAGE_NAME, exitAppOnError); + if (termuxTaskerPackageContext == null) + return null; + else + return new TermuxStylingAppSharedPreferences(termuxTaskerPackageContext); + } + + private static SharedPreferences getPrivateSharedPreferences(Context context) { + if (context == null) return null; + return SharedPreferenceUtils.getPrivateSharedPreferences(context, TermuxConstants.TERMUX_STYLING_DEFAULT_PREFERENCES_FILE_BASENAME_WITHOUT_EXTENSION); + } + + + + public int getLogLevel() { + return SharedPreferenceUtils.getInt(mSharedPreferences, TERMUX_STYLING_APP.KEY_LOG_LEVEL, Logger.DEFAULT_LOG_LEVEL); + } + + public void setLogLevel(Context context, int logLevel) { + logLevel = Logger.setLogLevel(context, logLevel); + SharedPreferenceUtils.setInt(mSharedPreferences, TERMUX_STYLING_APP.KEY_LOG_LEVEL, logLevel, false); + } + +} diff --git a/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxTaskerAppSharedPreferences.java b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxTaskerAppSharedPreferences.java index 412c9b2299..b8a7b69c1d 100644 --- a/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxTaskerAppSharedPreferences.java +++ b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxTaskerAppSharedPreferences.java @@ -52,7 +52,7 @@ public static TermuxTaskerAppSharedPreferences build(@NonNull final Context cont * {@link TermuxConstants#TERMUX_TASKER_PACKAGE_NAME}. * @param exitAppOnError If {@code true} and failed to get package context, then a dialog will * be shown which when dismissed will exit the app. - * @return Returns the {@link TermuxAppSharedPreferences}. This will {@code null} if an exception is raised. + * @return Returns the {@link TermuxTaskerAppSharedPreferences}. This will {@code null} if an exception is raised. */ public static TermuxTaskerAppSharedPreferences build(@NonNull final Context context, final boolean exitAppOnError) { Context termuxTaskerPackageContext = PackageUtils.getContextForPackageOrExitApp(context, TermuxConstants.TERMUX_TASKER_PACKAGE_NAME, exitAppOnError); diff --git a/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxWidgetAppSharedPreferences.java b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxWidgetAppSharedPreferences.java new file mode 100644 index 0000000000..44447d3f2e --- /dev/null +++ b/termux-shared/src/main/java/com/termux/shared/settings/preferences/TermuxWidgetAppSharedPreferences.java @@ -0,0 +1,79 @@ +package com.termux.shared.settings.preferences; + +import android.app.Activity; +import android.content.Context; +import android.content.SharedPreferences; + +import androidx.annotation.NonNull; + +import com.termux.shared.logger.Logger; +import com.termux.shared.packages.PackageUtils; +import com.termux.shared.settings.preferences.TermuxPreferenceConstants.TERMUX_WIDGET_APP; +import com.termux.shared.termux.TermuxConstants; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class TermuxWidgetAppSharedPreferences { + + private final Context mContext; + private final SharedPreferences mSharedPreferences; + + + private static final String LOG_TAG = "TermuxWidgetAppSharedPreferences"; + + private TermuxWidgetAppSharedPreferences(@Nonnull Context context) { + mContext = context; + mSharedPreferences = getPrivateSharedPreferences(mContext); + } + + /** + * Get the {@link Context} for a package name. + * + * @param context The {@link Context} to use to get the {@link Context} of the + * {@link TermuxConstants#TERMUX_WIDGET_PACKAGE_NAME}. + * @return Returns the {@link TermuxWidgetAppSharedPreferences}. This will {@code null} if an exception is raised. + */ + @Nullable + public static TermuxWidgetAppSharedPreferences build(@NonNull final Context context) { + Context termuxTaskerPackageContext = PackageUtils.getContextForPackage(context, TermuxConstants.TERMUX_WIDGET_PACKAGE_NAME); + if (termuxTaskerPackageContext == null) + return null; + else + return new TermuxWidgetAppSharedPreferences(termuxTaskerPackageContext); + } + + /** + * Get the {@link Context} for a package name. + * + * @param context The {@link Activity} to use to get the {@link Context} of the + * {@link TermuxConstants#TERMUX_WIDGET_PACKAGE_NAME}. + * @param exitAppOnError If {@code true} and failed to get package context, then a dialog will + * be shown which when dismissed will exit the app. + * @return Returns the {@link TermuxWidgetAppSharedPreferences}. This will {@code null} if an exception is raised. + */ + public static TermuxWidgetAppSharedPreferences build(@NonNull final Context context, final boolean exitAppOnError) { + Context termuxTaskerPackageContext = PackageUtils.getContextForPackageOrExitApp(context, TermuxConstants.TERMUX_WIDGET_PACKAGE_NAME, exitAppOnError); + if (termuxTaskerPackageContext == null) + return null; + else + return new TermuxWidgetAppSharedPreferences(termuxTaskerPackageContext); + } + + private static SharedPreferences getPrivateSharedPreferences(Context context) { + if (context == null) return null; + return SharedPreferenceUtils.getPrivateSharedPreferences(context, TermuxConstants.TERMUX_WIDGET_DEFAULT_PREFERENCES_FILE_BASENAME_WITHOUT_EXTENSION); + } + + + + public int getLogLevel() { + return SharedPreferenceUtils.getInt(mSharedPreferences, TERMUX_WIDGET_APP.KEY_LOG_LEVEL, Logger.DEFAULT_LOG_LEVEL); + } + + public void setLogLevel(Context context, int logLevel) { + logLevel = Logger.setLogLevel(context, logLevel); + SharedPreferenceUtils.setInt(mSharedPreferences, TERMUX_WIDGET_APP.KEY_LOG_LEVEL, logLevel, false); + } + +}