mirror of https://github.com/termux/termux-app
170 lines
8.0 KiB
Java
170 lines
8.0 KiB
Java
package com.termux.app.activities;
|
|
|
|
import android.content.Context;
|
|
import android.os.Bundle;
|
|
import android.os.Environment;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
import androidx.preference.Preference;
|
|
import androidx.preference.PreferenceFragmentCompat;
|
|
|
|
import com.termux.R;
|
|
import com.termux.shared.activities.ReportActivity;
|
|
import com.termux.shared.file.FileUtils;
|
|
import com.termux.shared.models.ReportInfo;
|
|
import com.termux.app.models.UserAction;
|
|
import com.termux.shared.interact.ShareUtils;
|
|
import com.termux.shared.android.PackageUtils;
|
|
import com.termux.shared.termux.settings.preferences.TermuxAPIAppSharedPreferences;
|
|
import com.termux.shared.termux.settings.preferences.TermuxFloatAppSharedPreferences;
|
|
import com.termux.shared.termux.settings.preferences.TermuxTaskerAppSharedPreferences;
|
|
import com.termux.shared.termux.settings.preferences.TermuxWidgetAppSharedPreferences;
|
|
import com.termux.shared.android.AndroidUtils;
|
|
import com.termux.shared.termux.TermuxConstants;
|
|
import com.termux.shared.termux.TermuxUtils;
|
|
import com.termux.shared.activity.media.AppCompatActivityUtils;
|
|
import com.termux.shared.theme.NightMode;
|
|
|
|
public class SettingsActivity extends AppCompatActivity {
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
|
|
AppCompatActivityUtils.setNightMode(this, NightMode.getAppNightMode().getName(), true);
|
|
|
|
setContentView(R.layout.activity_settings);
|
|
if (savedInstanceState == null) {
|
|
getSupportFragmentManager()
|
|
.beginTransaction()
|
|
.replace(R.id.settings, new RootPreferencesFragment())
|
|
.commit();
|
|
}
|
|
|
|
AppCompatActivityUtils.setToolbar(this, com.termux.shared.R.id.toolbar);
|
|
AppCompatActivityUtils.setShowBackButtonInActionBar(this, true);
|
|
}
|
|
|
|
@Override
|
|
public boolean onSupportNavigateUp() {
|
|
onBackPressed();
|
|
return true;
|
|
}
|
|
|
|
public static class RootPreferencesFragment extends PreferenceFragmentCompat {
|
|
@Override
|
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
|
Context context = getContext();
|
|
if (context == null) return;
|
|
|
|
setPreferencesFromResource(R.xml.root_preferences, rootKey);
|
|
|
|
new Thread() {
|
|
@Override
|
|
public void run() {
|
|
configureTermuxAPIPreference(context);
|
|
configureTermuxFloatPreference(context);
|
|
configureTermuxTaskerPreference(context);
|
|
configureTermuxWidgetPreference(context);
|
|
configureAboutPreference(context);
|
|
configureDonatePreference(context);
|
|
}
|
|
}.start();
|
|
}
|
|
|
|
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 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) {
|
|
TermuxTaskerAppSharedPreferences preferences = TermuxTaskerAppSharedPreferences.build(context, false);
|
|
// If failed to get app preferences, then likely app is not installed, so do not show its preference
|
|
termuxTaskerPreference.setVisible(preferences != null);
|
|
}
|
|
}
|
|
|
|
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) {
|
|
aboutPreference.setOnPreferenceClickListener(preference -> {
|
|
new Thread() {
|
|
@Override
|
|
public void run() {
|
|
String title = "About";
|
|
|
|
StringBuilder aboutString = new StringBuilder();
|
|
aboutString.append(TermuxUtils.getAppInfoMarkdownString(context, TermuxUtils.AppInfoMode.TERMUX_AND_PLUGIN_PACKAGES));
|
|
aboutString.append("\n\n").append(AndroidUtils.getDeviceInfoMarkdownString(context, true));
|
|
aboutString.append("\n\n").append(TermuxUtils.getImportantLinksMarkdownString(context));
|
|
|
|
String userActionName = UserAction.ABOUT.getName();
|
|
|
|
ReportInfo reportInfo = new ReportInfo(userActionName,
|
|
TermuxConstants.TERMUX_APP.TERMUX_SETTINGS_ACTIVITY_NAME, title);
|
|
reportInfo.setReportString(aboutString.toString());
|
|
reportInfo.setReportSaveFileLabelAndPath(userActionName,
|
|
Environment.getExternalStorageDirectory() + "/" +
|
|
FileUtils.sanitizeFileName(TermuxConstants.TERMUX_APP_NAME + "-" + userActionName + ".log", true, true));
|
|
|
|
ReportActivity.startReportActivity(context, reportInfo);
|
|
}
|
|
}.start();
|
|
|
|
return true;
|
|
});
|
|
}
|
|
}
|
|
|
|
private void configureDonatePreference(@NonNull Context context) {
|
|
Preference donatePreference = findPreference("donate");
|
|
if (donatePreference != null) {
|
|
String signingCertificateSHA256Digest = PackageUtils.getSigningCertificateSHA256DigestForPackage(context);
|
|
if (signingCertificateSHA256Digest != null) {
|
|
// If APK is a Google Playstore release, then do not show the donation link
|
|
// since Termux isn't exempted from the playstore policy donation links restriction
|
|
// Check Fund solicitations: https://pay.google.com/intl/en_in/about/policy/
|
|
String apkRelease = TermuxUtils.getAPKRelease(signingCertificateSHA256Digest);
|
|
if (apkRelease == null || apkRelease.equals(TermuxConstants.APK_RELEASE_GOOGLE_PLAYSTORE_SIGNING_CERTIFICATE_SHA256_DIGEST)) {
|
|
donatePreference.setVisible(false);
|
|
return;
|
|
} else {
|
|
donatePreference.setVisible(true);
|
|
}
|
|
}
|
|
|
|
donatePreference.setOnPreferenceClickListener(preference -> {
|
|
ShareUtils.openUrl(context, TermuxConstants.TERMUX_DONATE_URL);
|
|
return true;
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|