Skip to content

Commit

Permalink
feat: Use formated date for backup and log file names
Browse files Browse the repository at this point in the history
axel358 committed Sep 30, 2023
1 parent 9cf43b2 commit 9553a34
Showing 2 changed files with 193 additions and 184 deletions.
366 changes: 185 additions & 181 deletions app/src/main/java/cu/axel/smartdock/fragments/AdvancedPreferences.java
Original file line number Diff line number Diff line change
@@ -26,198 +26,202 @@
import cu.axel.smartdock.utils.Utils;

public class AdvancedPreferences extends PreferenceFragmentCompat {
private boolean rootAvailable;
private boolean rootAvailable;
private final int SAVE_REQUEST_CODE = 236;
private final int OPEN_REQUEST_CODE = 632;

@Override
public void onCreatePreferences(Bundle arg0, String arg1) {
setPreferencesFromResource(R.xml.preferences_advanced, arg1);

Preference preferLastDisplay = findPreference("prefer_last_display");
preferLastDisplay.setVisible(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q);

boolean hasWriteSettingsPermission = DeviceUtils.hasWriteSettingsPermission(getActivity());

preferLastDisplay.setOnPreferenceClickListener((Preference p1) -> {
showAccessibilityDialog(getActivity());
return true;
});

findPreference("soft_reboot").setOnPreferenceClickListener((Preference p1) -> {
DeviceUtils.sotfReboot();
return false;
});

Preference moveToSystem = findPreference("move_to_system");
moveToSystem.setVisible(!AppUtils.isSystemApp(getActivity(), getActivity().getPackageName()));
moveToSystem.setOnPreferenceClickListener((Preference p1) -> {
try {
ApplicationInfo appInfo = getActivity().getPackageManager()
.getApplicationInfo(getActivity().getPackageName(), 0);
String appDir = appInfo.sourceDir.substring(0, appInfo.sourceDir.lastIndexOf("/"));
DeviceUtils.runAsRoot("mv " + appDir + " /system/priv-app/");
DeviceUtils.reboot();
} catch (PackageManager.NameNotFoundException e) {
}
return false;
});

CheckBoxPreference hideNav = findPreference("hide_nav_buttons");

String result = DeviceUtils.runAsRoot("cat /system/build.prop");

hideNav.setChecked(result.contains("qemu.hw.mainkeys=1"));

rootAvailable = !result.equals("error");
findPreference("root_category").setEnabled(rootAvailable);

if (rootAvailable && !hasWriteSettingsPermission) {
DeviceUtils.grantPermission(Manifest.permission.WRITE_SECURE_SETTINGS);
hasWriteSettingsPermission = DeviceUtils.hasWriteSettingsPermission(getActivity());
}

CheckBoxPreference hideStatus = findPreference("hide_status_bar");
hideStatus.setVisible(Build.VERSION.SDK_INT < 31);

if (hasWriteSettingsPermission) {
findPreference("secure_category").setEnabled(true);

findPreference("custom_display_size").setOnPreferenceClickListener(p -> {
showDisplaySizeDialog(getActivity());
return true;
});

hideStatus.setChecked(DeviceUtils.getGlobalSetting(getActivity(), DeviceUtils.POLICY_CONTROL, "")
.equals(DeviceUtils.IMMERSIVE_APPS));

hideStatus.setOnPreferenceChangeListener((Preference p1, Object p2) -> {
if ((boolean) p2) {
if (DeviceUtils.putGlobalSetting(getActivity(), DeviceUtils.POLICY_CONTROL,
DeviceUtils.IMMERSIVE_APPS)) {
if (rootAvailable)
showRebootDialog(getActivity(), true);
return true;
}
} else {
if (DeviceUtils.putGlobalSetting(getActivity(), DeviceUtils.POLICY_CONTROL, null)) {
if (rootAvailable)
showRebootDialog(getActivity(), true);
return true;
}
}
return false;
});

findPreference("status_icon_blacklist").setOnPreferenceClickListener((Preference p1) -> {
showIBDialog(getActivity());
return false;
});

CheckBoxPreference disableHeadsUp = findPreference("disable_heads_up");
disableHeadsUp
.setChecked(DeviceUtils.getGlobalSetting(getActivity(), DeviceUtils.HEADS_UP_ENABLED, 1) == 0);
disableHeadsUp.setOnPreferenceChangeListener((Preference p1, Object p2) -> {
if ((boolean) p2) {
return DeviceUtils.putGlobalSetting(getActivity(), DeviceUtils.HEADS_UP_ENABLED, 0);
} else {
return DeviceUtils.putGlobalSetting(getActivity(), DeviceUtils.HEADS_UP_ENABLED, 1);
}
});
}

hideNav.setOnPreferenceChangeListener((Preference p1, Object p2) -> {
if ((boolean) p2) {
String status = DeviceUtils.runAsRoot("echo qemu.hw.mainkeys=1 >> /system/build.prop");
if (!status.equals("error")) {
hideNav.getSharedPreferences().edit().putBoolean("navbar_fix", false).apply();
showRebootDialog(getActivity(), false);
return true;
}
} else {
String status = DeviceUtils.runAsRoot("sed -i /qemu.hw.mainkeys=1/d /system/build.prop");
if (!status.equals("error")) {
hideNav.getSharedPreferences().edit().putBoolean("navbar_fix", true).apply();
showRebootDialog(getActivity(), false);
return true;
}
}
return false;
});

findPreference("navbar_fix").setVisible(Build.VERSION.SDK_INT > 31);
@Override
public void onCreatePreferences(Bundle arg0, String arg1) {
setPreferencesFromResource(R.xml.preferences_advanced, arg1);

Preference preferLastDisplay = findPreference("prefer_last_display");
preferLastDisplay.setVisible(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q);

boolean hasWriteSettingsPermission = DeviceUtils.hasWriteSettingsPermission(getActivity());

preferLastDisplay.setOnPreferenceClickListener((Preference p1) -> {
showAccessibilityDialog(getActivity());
return true;
});

findPreference("soft_reboot").setOnPreferenceClickListener((Preference p1) -> {
DeviceUtils.sotfReboot();
return false;
});

Preference moveToSystem = findPreference("move_to_system");
moveToSystem.setVisible(!AppUtils.isSystemApp(getActivity(), getActivity().getPackageName()));
moveToSystem.setOnPreferenceClickListener((Preference p1) -> {
try {
ApplicationInfo appInfo = getActivity().getPackageManager()
.getApplicationInfo(getActivity().getPackageName(), 0);
String appDir = appInfo.sourceDir.substring(0, appInfo.sourceDir.lastIndexOf("/"));
DeviceUtils.runAsRoot("mv " + appDir + " /system/priv-app/");
DeviceUtils.reboot();
} catch (PackageManager.NameNotFoundException e) {
}
return false;
});

CheckBoxPreference hideNav = findPreference("hide_nav_buttons");

String result = DeviceUtils.runAsRoot("cat /system/build.prop");

hideNav.setChecked(result.contains("qemu.hw.mainkeys=1"));

rootAvailable = !result.equals("error");
findPreference("root_category").setEnabled(rootAvailable);

if (rootAvailable && !hasWriteSettingsPermission) {
DeviceUtils.grantPermission(Manifest.permission.WRITE_SECURE_SETTINGS);
hasWriteSettingsPermission = DeviceUtils.hasWriteSettingsPermission(getActivity());
}

CheckBoxPreference hideStatus = findPreference("hide_status_bar");
hideStatus.setVisible(Build.VERSION.SDK_INT < 31);

if (hasWriteSettingsPermission) {
findPreference("secure_category").setEnabled(true);

findPreference("custom_display_size").setOnPreferenceClickListener(p -> {
showDisplaySizeDialog(getActivity());
return true;
});

hideStatus.setChecked(DeviceUtils.getGlobalSetting(getActivity(), DeviceUtils.POLICY_CONTROL, "")
.equals(DeviceUtils.IMMERSIVE_APPS));

hideStatus.setOnPreferenceChangeListener((Preference p1, Object p2) -> {
if ((boolean) p2) {
if (DeviceUtils.putGlobalSetting(getActivity(), DeviceUtils.POLICY_CONTROL,
DeviceUtils.IMMERSIVE_APPS)) {
if (rootAvailable)
showRebootDialog(getActivity(), true);
return true;
}
} else {
if (DeviceUtils.putGlobalSetting(getActivity(), DeviceUtils.POLICY_CONTROL, null)) {
if (rootAvailable)
showRebootDialog(getActivity(), true);
return true;
}
}
return false;
});

findPreference("status_icon_blacklist").setOnPreferenceClickListener((Preference p1) -> {
showIBDialog(getActivity());
return false;
});

CheckBoxPreference disableHeadsUp = findPreference("disable_heads_up");
disableHeadsUp
.setChecked(DeviceUtils.getGlobalSetting(getActivity(), DeviceUtils.HEADS_UP_ENABLED, 1) == 0);
disableHeadsUp.setOnPreferenceChangeListener((Preference p1, Object p2) -> {
if ((boolean) p2) {
return DeviceUtils.putGlobalSetting(getActivity(), DeviceUtils.HEADS_UP_ENABLED, 0);
} else {
return DeviceUtils.putGlobalSetting(getActivity(), DeviceUtils.HEADS_UP_ENABLED, 1);
}
});
}

hideNav.setOnPreferenceChangeListener((Preference p1, Object p2) -> {
if ((boolean) p2) {
String status = DeviceUtils.runAsRoot("echo qemu.hw.mainkeys=1 >> /system/build.prop");
if (!status.equals("error")) {
hideNav.getSharedPreferences().edit().putBoolean("navbar_fix", false).apply();
showRebootDialog(getActivity(), false);
return true;
}
} else {
String status = DeviceUtils.runAsRoot("sed -i /qemu.hw.mainkeys=1/d /system/build.prop");
if (!status.equals("error")) {
hideNav.getSharedPreferences().edit().putBoolean("navbar_fix", true).apply();
showRebootDialog(getActivity(), false);
return true;
}
}
return false;
});

findPreference("navbar_fix").setVisible(Build.VERSION.SDK_INT > 31);

findPreference("backup_preferences").setOnPreferenceClickListener((Preference p1) -> {

startActivityForResult(new Intent(Intent.ACTION_CREATE_DOCUMENT).addCategory(Intent.CATEGORY_OPENABLE)
.setType("*/*").putExtra(Intent.EXTRA_TITLE, Utils.BACKUP_FILE_NAME), SAVE_REQUEST_CODE);

.setType("*/*").putExtra(Intent.EXTRA_TITLE,
getActivity().getPackageName() + "_backup_" + Utils.getCurrentDateString() + ".sdp"),
SAVE_REQUEST_CODE);

return false;
});

findPreference("restore_preferences").setOnPreferenceClickListener((Preference p1) -> {

startActivityForResult(
new Intent(Intent.ACTION_OPEN_DOCUMENT).addCategory(Intent.CATEGORY_OPENABLE).setType("*/*"),
OPEN_REQUEST_CODE);
new Intent(Intent.ACTION_OPEN_DOCUMENT).addCategory(Intent.CATEGORY_OPENABLE).setType("*/*"),
OPEN_REQUEST_CODE);

return false;
});
}

public void showDisplaySizeDialog(final Context context) {
MaterialAlertDialogBuilder dialog = new MaterialAlertDialogBuilder(context);
dialog.setTitle(R.string.custom_display_size_title);
View view = LayoutInflater.from(context).inflate(R.layout.dialog_display_size, null);
final EditText contentEt = view.findViewById(R.id.display_size_et);
contentEt.setText(DeviceUtils.getSecureSetting(context, DeviceUtils.DISPLAY_SIZE, "") + "");
dialog.setPositiveButton(R.string.ok, (DialogInterface p1, int p2) -> {
String value = contentEt.getText().toString();
String size = value.equals("0") ? "" : value;

if (DeviceUtils.putSecureSetting(getActivity(), DeviceUtils.DISPLAY_SIZE, size) && rootAvailable)
showRebootDialog(getActivity(), true);
});
dialog.setNegativeButton(getString(R.string.cancel), null);
dialog.setView(view);
dialog.show();
}

public void showIBDialog(final Context context) {
MaterialAlertDialogBuilder dialog = new MaterialAlertDialogBuilder(context);
dialog.setTitle(R.string.icon_blacklist);
View view = LayoutInflater.from(context).inflate(R.layout.dialog_icon_blacklist, null);
final EditText contentEt = view.findViewById(R.id.icon_blacklist_et);
contentEt.setText(DeviceUtils.getSecureSetting(context, DeviceUtils.ICON_BLACKLIST, ""));
dialog.setPositiveButton(R.string.ok, (DialogInterface p1, int p2) -> DeviceUtils.putSecureSetting(context, DeviceUtils.ICON_BLACKLIST, contentEt.getText().toString()));
dialog.setNegativeButton(getString(R.string.cancel), null);
dialog.setView(view);
dialog.show();
}

public void showRebootDialog(Context context, final boolean softReboot) {
MaterialAlertDialogBuilder dialog = new MaterialAlertDialogBuilder(context);
dialog.setTitle(getString(R.string.reboot_required_title));
dialog.setMessage(getString(R.string.reboot_required_text));
dialog.setPositiveButton(getString(R.string.ok), (DialogInterface p1, int p2) -> {
if (softReboot)
DeviceUtils.sotfReboot();
else
DeviceUtils.reboot();
});
dialog.setNegativeButton(getString(R.string.cancel), null);
dialog.show();
}

public void showAccessibilityDialog(final Context context) {
MaterialAlertDialogBuilder dialog = new MaterialAlertDialogBuilder(context);
dialog.setTitle(R.string.restart);
dialog.setMessage(R.string.restart_accessibility);
dialog.setNegativeButton(getString(R.string.cancel), null);
dialog.setPositiveButton(getString(R.string.open_accessibility), (DialogInterface p1, int p2) -> startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)));
dialog.show();
}

}

public void showDisplaySizeDialog(final Context context) {
MaterialAlertDialogBuilder dialog = new MaterialAlertDialogBuilder(context);
dialog.setTitle(R.string.custom_display_size_title);
View view = LayoutInflater.from(context).inflate(R.layout.dialog_display_size, null);
final EditText contentEt = view.findViewById(R.id.display_size_et);
contentEt.setText(DeviceUtils.getSecureSetting(context, DeviceUtils.DISPLAY_SIZE, "") + "");
dialog.setPositiveButton(R.string.ok, (DialogInterface p1, int p2) -> {
String value = contentEt.getText().toString();
String size = value.equals("0") ? "" : value;

if (DeviceUtils.putSecureSetting(getActivity(), DeviceUtils.DISPLAY_SIZE, size) && rootAvailable)
showRebootDialog(getActivity(), true);
});
dialog.setNegativeButton(getString(R.string.cancel), null);
dialog.setView(view);
dialog.show();
}

public void showIBDialog(final Context context) {
MaterialAlertDialogBuilder dialog = new MaterialAlertDialogBuilder(context);
dialog.setTitle(R.string.icon_blacklist);
View view = LayoutInflater.from(context).inflate(R.layout.dialog_icon_blacklist, null);
final EditText contentEt = view.findViewById(R.id.icon_blacklist_et);
contentEt.setText(DeviceUtils.getSecureSetting(context, DeviceUtils.ICON_BLACKLIST, ""));
dialog.setPositiveButton(R.string.ok, (DialogInterface p1, int p2) -> DeviceUtils.putSecureSetting(context,
DeviceUtils.ICON_BLACKLIST, contentEt.getText().toString()));
dialog.setNegativeButton(getString(R.string.cancel), null);
dialog.setView(view);
dialog.show();
}

public void showRebootDialog(Context context, final boolean softReboot) {
MaterialAlertDialogBuilder dialog = new MaterialAlertDialogBuilder(context);
dialog.setTitle(getString(R.string.reboot_required_title));
dialog.setMessage(getString(R.string.reboot_required_text));
dialog.setPositiveButton(getString(R.string.ok), (DialogInterface p1, int p2) -> {
if (softReboot)
DeviceUtils.sotfReboot();
else
DeviceUtils.reboot();
});
dialog.setNegativeButton(getString(R.string.cancel), null);
dialog.show();
}

public void showAccessibilityDialog(final Context context) {
MaterialAlertDialogBuilder dialog = new MaterialAlertDialogBuilder(context);
dialog.setTitle(R.string.restart);
dialog.setMessage(R.string.restart_accessibility);
dialog.setNegativeButton(getString(R.string.cancel), null);
dialog.setPositiveButton(getString(R.string.open_accessibility),
(DialogInterface p1, int p2) -> startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)));
dialog.show();
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (resultCode == Activity.RESULT_OK) {
11 changes: 8 additions & 3 deletions app/src/main/java/cu/axel/smartdock/utils/Utils.java
Original file line number Diff line number Diff line change
@@ -27,13 +27,14 @@
import cu.axel.smartdock.R;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

public class Utils {
public static boolean notificationPanelVisible, shouldPlayChargeComplete;
public static long startupTime;
public static String BACKUP_FILE_NAME = "cu.axel.smartdock_preferences_backup.sdp";
//public static int dockHeight;
//public static int dockHeight;

public static void toggleBuiltinNavigation(SharedPreferences.Editor editor, boolean value) {
editor.putBoolean("enable_nav_back", value);
@@ -130,7 +131,7 @@ else if (level == 100)
public static void saveLog(Context context, String name, String log) {
try {
FileWriter fw = new FileWriter(
new File(context.getExternalFilesDir(null), name + "_" + System.currentTimeMillis() + ".log"));
new File(context.getExternalFilesDir(null), name + "_" + getCurrentDateString() + ".log"));
fw.write(log);
fw.close();
} catch (IOException e) {
@@ -242,5 +243,9 @@ else if (type.equals("integer"))
}

}

public static String getCurrentDateString(){
return new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss").format(new Date());
}

}

0 comments on commit 9553a34

Please sign in to comment.