2019-11-06 14:09:38 +01:00
|
|
|
package app.fedilab.android.fragments;
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
import android.Manifest;
|
|
|
|
import android.app.AlarmManager;
|
|
|
|
import android.app.PendingIntent;
|
2019-11-11 17:16:34 +01:00
|
|
|
import android.content.Context;
|
2019-11-13 09:05:20 +01:00
|
|
|
import android.content.Intent;
|
2019-11-06 15:52:39 +01:00
|
|
|
import android.content.SharedPreferences;
|
2019-11-13 10:47:00 +01:00
|
|
|
import android.content.pm.PackageManager;
|
2019-11-13 09:05:20 +01:00
|
|
|
import android.database.sqlite.SQLiteDatabase;
|
|
|
|
import android.graphics.BitmapFactory;
|
|
|
|
import android.net.Uri;
|
2019-11-06 14:09:38 +01:00
|
|
|
import android.os.Bundle;
|
2019-11-13 09:05:20 +01:00
|
|
|
import android.os.Environment;
|
|
|
|
import android.widget.Toast;
|
2019-11-11 17:16:34 +01:00
|
|
|
|
2019-11-06 15:52:39 +01:00
|
|
|
import androidx.appcompat.app.AlertDialog;
|
2019-11-13 10:47:00 +01:00
|
|
|
import androidx.core.app.ActivityCompat;
|
|
|
|
import androidx.core.content.ContextCompat;
|
2019-11-06 15:52:39 +01:00
|
|
|
import androidx.fragment.app.FragmentActivity;
|
2019-11-11 17:16:34 +01:00
|
|
|
import androidx.preference.ListPreference;
|
2019-11-06 15:52:39 +01:00
|
|
|
import androidx.preference.Preference;
|
2019-11-06 14:09:38 +01:00
|
|
|
import androidx.preference.PreferenceFragmentCompat;
|
2019-11-06 15:52:39 +01:00
|
|
|
import androidx.preference.PreferenceManager;
|
2019-11-12 19:36:18 +01:00
|
|
|
import androidx.preference.PreferenceScreen;
|
2019-11-06 14:09:38 +01:00
|
|
|
|
2019-11-11 17:16:34 +01:00
|
|
|
import com.jaredrummler.cyanea.Cyanea;
|
|
|
|
import com.jaredrummler.cyanea.prefs.CyaneaTheme;
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
import java.io.BufferedReader;
|
2019-11-13 09:05:20 +01:00
|
|
|
import java.io.File;
|
|
|
|
import java.io.FileOutputStream;
|
2019-11-13 10:47:00 +01:00
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.InputStream;
|
|
|
|
import java.io.InputStreamReader;
|
2019-11-13 09:05:20 +01:00
|
|
|
import java.io.OutputStreamWriter;
|
|
|
|
import java.io.PrintWriter;
|
2019-11-15 16:32:25 +01:00
|
|
|
import java.nio.charset.StandardCharsets;
|
2019-11-11 17:16:34 +01:00
|
|
|
import java.util.Arrays;
|
2019-11-13 09:05:20 +01:00
|
|
|
import java.util.Date;
|
2019-11-11 17:16:34 +01:00
|
|
|
import java.util.List;
|
|
|
|
import java.util.Objects;
|
2019-11-10 19:20:44 +01:00
|
|
|
|
2019-11-06 14:09:38 +01:00
|
|
|
import app.fedilab.android.R;
|
2019-11-13 10:47:00 +01:00
|
|
|
import app.fedilab.android.activities.MainActivity;
|
2019-11-11 13:18:35 +01:00
|
|
|
import app.fedilab.android.activities.SettingsActivity;
|
2019-11-13 10:47:00 +01:00
|
|
|
import app.fedilab.android.activities.TootActivity;
|
2019-11-13 09:05:20 +01:00
|
|
|
import app.fedilab.android.client.Entities.Account;
|
2019-11-06 15:52:39 +01:00
|
|
|
import app.fedilab.android.helper.Helper;
|
2019-11-13 09:05:20 +01:00
|
|
|
import app.fedilab.android.sqlite.AccountDAO;
|
|
|
|
import app.fedilab.android.sqlite.Sqlite;
|
|
|
|
import es.dmoral.toasty.Toasty;
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
import static android.app.Activity.RESULT_OK;
|
2019-11-13 09:05:20 +01:00
|
|
|
import static android.content.Context.MODE_PRIVATE;
|
2019-11-06 15:52:39 +01:00
|
|
|
|
2019-11-06 14:09:38 +01:00
|
|
|
|
2019-11-15 16:32:25 +01:00
|
|
|
public class ColorSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener {
|
2019-11-06 15:52:39 +01:00
|
|
|
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
private final int PICK_IMPORT_THEME = 5557;
|
2019-11-11 13:18:35 +01:00
|
|
|
|
2019-11-06 14:09:38 +01:00
|
|
|
@Override
|
|
|
|
public void onCreatePreferences(Bundle bundle, String s) {
|
|
|
|
addPreferencesFromResource(R.xml.fragment_settings_color);
|
2019-11-12 19:36:18 +01:00
|
|
|
createPref();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onResume() {
|
|
|
|
super.onResume();
|
|
|
|
|
|
|
|
getPreferenceScreen().getSharedPreferences()
|
|
|
|
.registerOnSharedPreferenceChangeListener(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onPause() {
|
|
|
|
super.onPause();
|
|
|
|
getPreferenceScreen().getSharedPreferences()
|
|
|
|
.unregisterOnSharedPreferenceChangeListener(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
|
|
|
SettingsActivity.needRestart = true;
|
|
|
|
|
|
|
|
if (key.equals("use_custom_theme")) {
|
2019-11-15 16:32:25 +01:00
|
|
|
if (!sharedPreferences.getBoolean("use_custom_theme", false)) {
|
2019-11-13 09:05:20 +01:00
|
|
|
|
|
|
|
FragmentActivity context = getActivity();
|
|
|
|
assert context != null;
|
|
|
|
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
|
2019-11-13 09:06:54 +01:00
|
|
|
dialogBuilder.setMessage(R.string.restore_default_theme);
|
2020-04-08 12:42:15 +02:00
|
|
|
dialogBuilder.setPositiveButton(R.string.restore, (dialog, id) -> {
|
|
|
|
reset();
|
|
|
|
dialog.dismiss();
|
|
|
|
restart();
|
2019-11-13 09:05:20 +01:00
|
|
|
});
|
2020-04-08 12:42:15 +02:00
|
|
|
dialogBuilder.setNegativeButton(R.string.store_before, (dialog, id) -> {
|
|
|
|
|
|
|
|
exportColors();
|
|
|
|
reset();
|
|
|
|
dialog.dismiss();
|
|
|
|
restart();
|
2019-11-13 09:05:20 +01:00
|
|
|
});
|
2020-04-08 12:42:15 +02:00
|
|
|
dialogBuilder.setNeutralButton(R.string.cancel, (dialog, id) -> dialog.dismiss());
|
2019-11-13 09:05:20 +01:00
|
|
|
AlertDialog alertDialog = dialogBuilder.create();
|
|
|
|
alertDialog.setCancelable(false);
|
|
|
|
alertDialog.show();
|
|
|
|
}
|
2019-11-12 19:36:18 +01:00
|
|
|
createPref();
|
|
|
|
}
|
2019-11-15 16:32:25 +01:00
|
|
|
if (key.compareTo("pref_theme_picker") == 0) {
|
2019-11-12 19:36:18 +01:00
|
|
|
String theme = sharedPreferences.getString("pref_theme_picker", null);
|
|
|
|
List<CyaneaTheme> list = CyaneaTheme.Companion.from(Objects.requireNonNull(getActivity()).getAssets(), "themes/cyanea_themes.json");
|
2019-11-15 16:32:25 +01:00
|
|
|
if (getActivity() != null && theme != null) {
|
2019-11-12 19:36:18 +01:00
|
|
|
SharedPreferences sharedpreferences = getActivity().getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
|
|
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
|
|
|
int i = 0;
|
2020-05-08 15:52:13 +02:00
|
|
|
if (theme.compareTo("1") == 0) {
|
2019-11-12 19:36:18 +01:00
|
|
|
editor.putInt(Helper.SET_THEME, Helper.THEME_LIGHT);
|
2020-05-08 15:52:13 +02:00
|
|
|
} else if (theme.compareTo("2") == 0) {
|
2019-11-12 19:36:18 +01:00
|
|
|
editor.putInt(Helper.SET_THEME, Helper.THEME_DARK);
|
|
|
|
i = 1;
|
2019-11-15 16:32:25 +01:00
|
|
|
} else if (theme.compareTo("3") == 0) {
|
2019-11-12 19:36:18 +01:00
|
|
|
editor.putInt(Helper.SET_THEME, Helper.THEME_BLACK);
|
|
|
|
i = 2;
|
|
|
|
}
|
|
|
|
editor.commit();
|
|
|
|
list.get(i).apply(Cyanea.getInstance()).recreate(getActivity());
|
2020-05-08 15:52:13 +02:00
|
|
|
restart();
|
2019-11-12 19:36:18 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
@Override
|
|
|
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
|
super.onActivityResult(requestCode, resultCode, data);
|
|
|
|
if (requestCode == PICK_IMPORT_THEME && resultCode == RESULT_OK) {
|
|
|
|
if (data == null || data.getData() == null) {
|
2020-04-08 12:42:15 +02:00
|
|
|
Toasty.error(Objects.requireNonNull(getActivity()), getString(R.string.theme_file_error), Toast.LENGTH_LONG).show();
|
2019-11-13 10:47:00 +01:00
|
|
|
return;
|
|
|
|
}
|
2019-11-15 16:32:25 +01:00
|
|
|
if (data.getData() != null) {
|
2019-11-13 10:47:00 +01:00
|
|
|
BufferedReader br = null;
|
|
|
|
try {
|
2020-04-08 12:42:15 +02:00
|
|
|
InputStream inputStream = Objects.requireNonNull(getActivity()).getContentResolver().openInputStream(data.getData());
|
2019-11-13 10:47:00 +01:00
|
|
|
assert inputStream != null;
|
2019-11-15 16:32:25 +01:00
|
|
|
br = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
|
2019-11-13 10:47:00 +01:00
|
|
|
String sCurrentLine;
|
|
|
|
int i = 0;
|
|
|
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
|
|
|
SharedPreferences.Editor editor = prefs.edit();
|
2019-11-13 11:12:26 +01:00
|
|
|
|
|
|
|
editor.putBoolean("use_custom_theme", true);
|
2019-11-13 10:47:00 +01:00
|
|
|
while ((sCurrentLine = br.readLine()) != null) {
|
2019-11-15 16:32:25 +01:00
|
|
|
if (i > 0) {
|
2019-11-13 10:47:00 +01:00
|
|
|
String[] line = sCurrentLine.split(",");
|
2019-11-15 16:32:25 +01:00
|
|
|
if (line.length > 1) {
|
2019-11-13 10:47:00 +01:00
|
|
|
String key = line[0];
|
|
|
|
String value = line[1];
|
2019-11-15 16:32:25 +01:00
|
|
|
if (key.compareTo("base_theme") == 0) {
|
2019-11-13 10:47:00 +01:00
|
|
|
SharedPreferences sharedpreferences = getActivity().getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
|
|
|
SharedPreferences.Editor appEditor = sharedpreferences.edit();
|
2020-03-08 10:29:06 +01:00
|
|
|
if (value != null && value.matches("-?\\d+")) {
|
2019-11-26 18:29:20 +01:00
|
|
|
appEditor.putInt(Helper.SET_THEME, Integer.parseInt(value));
|
|
|
|
}
|
2019-11-13 11:12:26 +01:00
|
|
|
appEditor.commit();
|
2019-11-15 16:32:25 +01:00
|
|
|
} else if (key.compareTo("pref_color_navigation_bar") == 0 || key.compareTo("pref_color_status_bar") == 0) {
|
2019-11-26 18:29:20 +01:00
|
|
|
editor.putBoolean(key, Boolean.parseBoolean(value));
|
2019-11-15 16:32:25 +01:00
|
|
|
} else {
|
2020-03-08 10:29:06 +01:00
|
|
|
if (value != null && value.matches("-?\\d+")) {
|
2019-11-26 18:29:20 +01:00
|
|
|
editor.putInt(key, Integer.parseInt(value));
|
|
|
|
}
|
2019-11-13 10:47:00 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
i++;
|
|
|
|
}
|
2019-11-14 18:23:35 +01:00
|
|
|
editor.putBoolean("use_custom_theme", true);
|
2019-11-13 11:12:26 +01:00
|
|
|
editor.commit();
|
2019-11-13 10:47:00 +01:00
|
|
|
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity());
|
|
|
|
dialogBuilder.setMessage(R.string.restart_message);
|
|
|
|
dialogBuilder.setTitle(R.string.apply_changes);
|
2020-04-08 12:42:15 +02:00
|
|
|
dialogBuilder.setPositiveButton(R.string.restart, (dialog, id) -> restart());
|
|
|
|
dialogBuilder.setNegativeButton(R.string.no, (dialog, id) -> dialog.dismiss());
|
2019-11-13 10:47:00 +01:00
|
|
|
AlertDialog alertDialog = dialogBuilder.create();
|
|
|
|
alertDialog.setCancelable(false);
|
|
|
|
alertDialog.show();
|
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} finally {
|
|
|
|
try {
|
2019-11-15 16:32:25 +01:00
|
|
|
if (br != null) br.close();
|
2019-11-13 10:47:00 +01:00
|
|
|
} catch (IOException ex) {
|
|
|
|
ex.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-11-15 16:32:25 +01:00
|
|
|
} else {
|
2020-04-08 12:42:15 +02:00
|
|
|
Toasty.error(Objects.requireNonNull(getActivity()), getString(R.string.theme_file_error), Toast.LENGTH_LONG).show();
|
2019-11-13 10:47:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2019-11-15 16:32:25 +01:00
|
|
|
private void restart() {
|
2019-11-13 11:12:26 +01:00
|
|
|
Intent mStartActivity = new Intent(getActivity(), MainActivity.class);
|
|
|
|
int mPendingIntentId = 123456;
|
2019-11-15 16:32:25 +01:00
|
|
|
PendingIntent mPendingIntent = PendingIntent.getActivity(getActivity(), mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
|
2020-04-08 12:42:15 +02:00
|
|
|
AlarmManager mgr = (AlarmManager) Objects.requireNonNull(getActivity()).getSystemService(Context.ALARM_SERVICE);
|
2019-11-13 11:12:26 +01:00
|
|
|
assert mgr != null;
|
|
|
|
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);
|
|
|
|
System.exit(0);
|
2019-11-15 16:32:25 +01:00
|
|
|
if (getActivity() != null) {
|
2019-11-14 18:23:35 +01:00
|
|
|
getActivity().finish();
|
|
|
|
}
|
2019-11-13 11:12:26 +01:00
|
|
|
}
|
2019-11-13 10:47:00 +01:00
|
|
|
|
2019-11-15 16:32:25 +01:00
|
|
|
private void createPref() {
|
2019-11-12 19:36:18 +01:00
|
|
|
getPreferenceScreen().removeAll();
|
|
|
|
addPreferencesFromResource(R.xml.fragment_settings_color);
|
|
|
|
PreferenceScreen preferenceScreen = getPreferenceScreen();
|
2019-11-06 15:52:39 +01:00
|
|
|
FragmentActivity context = getActivity();
|
2019-11-11 15:19:02 +01:00
|
|
|
assert context != null;
|
2020-03-08 10:29:06 +01:00
|
|
|
if (preferenceScreen == null) {
|
2019-11-19 17:59:59 +01:00
|
|
|
Toasty.error(getActivity(), getString(R.string.toast_error), Toasty.LENGTH_SHORT).show();
|
|
|
|
return;
|
|
|
|
}
|
2019-11-06 15:52:39 +01:00
|
|
|
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
2019-11-12 19:36:18 +01:00
|
|
|
ListPreference pref_theme_picker = (ListPreference) findPreference("pref_theme_picker");
|
|
|
|
Preference theme_link_color = findPreference("theme_link_color");
|
|
|
|
Preference theme_boost_header_color = findPreference("theme_boost_header_color");
|
2019-11-15 19:06:43 +01:00
|
|
|
Preference theme_text_header_1_line = findPreference("theme_text_header_1_line");
|
|
|
|
Preference theme_text_header_2_line = findPreference("theme_text_header_2_line");
|
2019-11-12 19:36:18 +01:00
|
|
|
Preference theme_statuses_color = findPreference("theme_statuses_color");
|
|
|
|
Preference theme_icons_color = findPreference("theme_icons_color");
|
|
|
|
Preference theme_text_color = findPreference("theme_text_color");
|
|
|
|
Preference theme_primary = findPreference("theme_primary");
|
|
|
|
Preference theme_accent = findPreference("theme_accent");
|
|
|
|
Preference pref_color_navigation_bar = findPreference("pref_color_navigation_bar");
|
2019-11-13 09:05:20 +01:00
|
|
|
Preference pref_color_status_bar = findPreference("pref_color_status_bar");
|
2019-11-12 19:36:18 +01:00
|
|
|
Preference pref_color_background = findPreference("pref_color_background");
|
2019-11-13 10:47:00 +01:00
|
|
|
Preference pref_import = findPreference("pref_import");
|
|
|
|
Preference pref_export = findPreference("pref_export");
|
2019-11-12 19:36:18 +01:00
|
|
|
Preference reset_pref = findPreference("reset_pref");
|
2020-03-08 10:29:06 +01:00
|
|
|
if (!sharedpreferences.getBoolean("use_custom_theme", false)) {
|
2019-11-12 19:36:18 +01:00
|
|
|
preferenceScreen.removePreference(theme_link_color);
|
|
|
|
preferenceScreen.removePreference(theme_boost_header_color);
|
2019-11-15 19:06:43 +01:00
|
|
|
preferenceScreen.removePreference(theme_text_header_1_line);
|
|
|
|
preferenceScreen.removePreference(theme_text_header_2_line);
|
2019-11-12 19:36:18 +01:00
|
|
|
preferenceScreen.removePreference(theme_statuses_color);
|
|
|
|
preferenceScreen.removePreference(theme_icons_color);
|
|
|
|
preferenceScreen.removePreference(theme_text_color);
|
|
|
|
preferenceScreen.removePreference(theme_primary);
|
|
|
|
preferenceScreen.removePreference(theme_accent);
|
|
|
|
preferenceScreen.removePreference(pref_color_navigation_bar);
|
2019-11-13 09:05:20 +01:00
|
|
|
preferenceScreen.removePreference(pref_color_status_bar);
|
2019-11-12 19:36:18 +01:00
|
|
|
preferenceScreen.removePreference(pref_color_background);
|
|
|
|
preferenceScreen.removePreference(reset_pref);
|
2019-11-13 10:47:00 +01:00
|
|
|
preferenceScreen.removePreference(pref_export);
|
2019-11-11 13:18:35 +01:00
|
|
|
|
2019-11-12 19:36:18 +01:00
|
|
|
}
|
2019-11-11 17:16:34 +01:00
|
|
|
List<String> array = Arrays.asList(getResources().getStringArray(R.array.settings_theme));
|
2020-06-17 18:20:35 +02:00
|
|
|
CharSequence[] entries = array.toArray(new CharSequence[0]);
|
2019-11-11 17:16:34 +01:00
|
|
|
CharSequence[] entryValues = new CharSequence[3];
|
|
|
|
final SharedPreferences sharedpref = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
|
|
|
int theme = sharedpref.getInt(Helper.SET_THEME, Helper.THEME_DARK);
|
2020-05-08 15:52:13 +02:00
|
|
|
entryValues[0] = String.valueOf(Helper.THEME_DARK);
|
|
|
|
entryValues[1] = String.valueOf(Helper.THEME_LIGHT);
|
2019-11-11 17:16:34 +01:00
|
|
|
entryValues[2] = String.valueOf(Helper.THEME_BLACK);
|
2019-11-12 19:36:18 +01:00
|
|
|
pref_theme_picker.setEntries(entries);
|
2020-05-08 15:52:13 +02:00
|
|
|
int default_theme_value;
|
2020-05-16 11:32:09 +02:00
|
|
|
switch (theme) {
|
2020-05-08 15:52:13 +02:00
|
|
|
case Helper.THEME_LIGHT:
|
|
|
|
default_theme_value = 1;
|
|
|
|
break;
|
|
|
|
case Helper.THEME_BLACK:
|
|
|
|
default_theme_value = 2;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default_theme_value = 0;
|
|
|
|
}
|
2019-11-12 19:36:18 +01:00
|
|
|
|
2019-11-11 17:16:34 +01:00
|
|
|
|
2020-05-08 15:52:13 +02:00
|
|
|
pref_theme_picker.setEntryValues(entryValues);
|
|
|
|
pref_theme_picker.setValueIndex(default_theme_value);
|
|
|
|
|
|
|
|
pref_export.setOnPreferenceClickListener(preference -> {
|
|
|
|
exportColors();
|
|
|
|
return true;
|
2019-11-13 10:47:00 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
|
2020-05-08 15:52:13 +02:00
|
|
|
pref_import.setOnPreferenceClickListener(preference -> {
|
|
|
|
if (ContextCompat.checkSelfPermission(Objects.requireNonNull(getActivity()), Manifest.permission.READ_EXTERNAL_STORAGE) !=
|
|
|
|
PackageManager.PERMISSION_GRANTED) {
|
|
|
|
ActivityCompat.requestPermissions(getActivity(),
|
|
|
|
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
|
|
|
|
TootActivity.MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
|
2019-11-13 10:47:00 +01:00
|
|
|
return true;
|
|
|
|
}
|
2020-05-08 15:52:13 +02:00
|
|
|
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
|
|
|
|
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
2021-01-20 11:43:57 +01:00
|
|
|
intent.setType("*/*");
|
|
|
|
String[] mimetypes = {"*/*"};
|
|
|
|
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
|
|
|
|
startActivityForResult(intent, PICK_IMPORT_THEME);
|
2020-05-08 15:52:13 +02:00
|
|
|
return true;
|
2019-11-13 10:47:00 +01:00
|
|
|
});
|
|
|
|
|
2020-04-08 12:42:15 +02:00
|
|
|
reset_pref.setOnPreferenceClickListener(preference -> {
|
|
|
|
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
|
|
|
|
dialogBuilder.setMessage(R.string.reset_color);
|
|
|
|
dialogBuilder.setPositiveButton(R.string.reset, (dialog, id) -> {
|
|
|
|
reset();
|
|
|
|
dialog.dismiss();
|
|
|
|
setPreferenceScreen(null);
|
|
|
|
addPreferencesFromResource(R.xml.fragment_settings_color);
|
|
|
|
|
|
|
|
});
|
|
|
|
dialogBuilder.setNegativeButton(R.string.cancel, (dialog, id) -> dialog.dismiss());
|
|
|
|
AlertDialog alertDialog = dialogBuilder.create();
|
|
|
|
alertDialog.setCancelable(false);
|
|
|
|
alertDialog.show();
|
|
|
|
return true;
|
2019-11-06 15:52:39 +01:00
|
|
|
});
|
2019-11-06 14:09:38 +01:00
|
|
|
}
|
2019-11-13 09:05:20 +01:00
|
|
|
|
2019-11-15 16:32:25 +01:00
|
|
|
private void reset() {
|
2020-04-08 12:42:15 +02:00
|
|
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Objects.requireNonNull(getActivity()));
|
2019-11-13 09:05:20 +01:00
|
|
|
SharedPreferences.Editor editor = prefs.edit();
|
|
|
|
editor.remove("theme_boost_header_color");
|
2019-11-15 19:06:43 +01:00
|
|
|
editor.remove("theme_text_header_1_line");
|
|
|
|
editor.remove("theme_text_header_2_line");
|
2019-11-13 09:05:20 +01:00
|
|
|
editor.remove("theme_statuses_color");
|
|
|
|
editor.remove("theme_link_color");
|
|
|
|
editor.remove("theme_icons_color");
|
|
|
|
editor.remove("pref_color_background");
|
|
|
|
editor.remove("pref_color_status_bar");
|
|
|
|
editor.remove("pref_color_navigation_bar");
|
|
|
|
editor.remove("theme_accent");
|
|
|
|
editor.remove("theme_text_color");
|
|
|
|
editor.remove("theme_primary");
|
2019-11-20 19:07:46 +01:00
|
|
|
//editor.remove("use_custom_theme");
|
2019-11-13 09:05:20 +01:00
|
|
|
editor.commit();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void exportColors() {
|
2020-04-08 12:42:15 +02:00
|
|
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Objects.requireNonNull(getActivity()));
|
2019-11-13 09:05:20 +01:00
|
|
|
try {
|
|
|
|
String fileName = "Fedilab_color_export_" + Helper.dateFileToString(getActivity(), new Date()) + ".csv";
|
|
|
|
String filePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath();
|
|
|
|
String fullPath = filePath + "/" + fileName;
|
2019-11-15 16:32:25 +01:00
|
|
|
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File(fullPath)), StandardCharsets.UTF_8));
|
2019-11-13 09:05:20 +01:00
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
|
builder.append("type").append(',');
|
|
|
|
builder.append("value").append(',');
|
|
|
|
builder.append('\n');
|
|
|
|
int theme_boost_header_color = prefs.getInt("theme_boost_header_color", -1);
|
2019-11-15 19:06:43 +01:00
|
|
|
int theme_text_header_1_line = prefs.getInt("theme_text_header_1_line", -1);
|
|
|
|
int theme_text_header_2_line = prefs.getInt("theme_text_header_2_line", -1);
|
2019-11-13 09:05:20 +01:00
|
|
|
int theme_statuses_color = prefs.getInt("theme_statuses_color", -1);
|
|
|
|
int theme_link_color = prefs.getInt("theme_link_color", -1);
|
|
|
|
int theme_icons_color = prefs.getInt("theme_icons_color", -1);
|
|
|
|
int pref_color_background = prefs.getInt("pref_color_background", -1);
|
|
|
|
boolean pref_color_navigation_bar = prefs.getBoolean("pref_color_navigation_bar", true);
|
|
|
|
boolean pref_color_status_bar = prefs.getBoolean("pref_color_status_bar", true);
|
|
|
|
int theme_accent = prefs.getInt("theme_accent", -1);
|
|
|
|
int theme_text_color = prefs.getInt("theme_text_color", -1);
|
|
|
|
int theme_primary = prefs.getInt("theme_primary", -1);
|
|
|
|
SharedPreferences sharedpreferences = getActivity().getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
|
|
|
|
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
|
|
|
|
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
builder.append("base_theme").append(',');
|
|
|
|
builder.append(theme).append(',');
|
2019-11-13 09:05:20 +01:00
|
|
|
builder.append('\n');
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
builder.append("theme_boost_header_color").append(',');
|
|
|
|
builder.append(theme_boost_header_color).append(',');
|
2019-11-13 09:05:20 +01:00
|
|
|
builder.append('\n');
|
|
|
|
|
2019-11-15 19:06:43 +01:00
|
|
|
builder.append("theme_text_header_1_line").append(',');
|
|
|
|
builder.append(theme_text_header_1_line).append(',');
|
|
|
|
builder.append('\n');
|
|
|
|
|
|
|
|
builder.append("theme_text_header_2_line").append(',');
|
|
|
|
builder.append(theme_text_header_2_line).append(',');
|
|
|
|
builder.append('\n');
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
builder.append("theme_statuses_color").append(',');
|
|
|
|
builder.append(theme_statuses_color).append(',');
|
2019-11-13 09:05:20 +01:00
|
|
|
builder.append('\n');
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
builder.append("theme_link_color").append(',');
|
|
|
|
builder.append(theme_link_color).append(',');
|
2019-11-13 09:05:20 +01:00
|
|
|
builder.append('\n');
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
builder.append("theme_icons_color").append(',');
|
|
|
|
builder.append(theme_icons_color).append(',');
|
2019-11-13 09:05:20 +01:00
|
|
|
builder.append('\n');
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
builder.append("pref_color_background").append(',');
|
|
|
|
builder.append(pref_color_background).append(',');
|
2019-11-13 09:05:20 +01:00
|
|
|
builder.append('\n');
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
builder.append("pref_color_navigation_bar").append(',');
|
|
|
|
builder.append(pref_color_navigation_bar).append(',');
|
2019-11-13 09:05:20 +01:00
|
|
|
builder.append('\n');
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
builder.append("pref_color_status_bar").append(',');
|
|
|
|
builder.append(pref_color_status_bar).append(',');
|
2019-11-13 09:05:20 +01:00
|
|
|
builder.append('\n');
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
builder.append("theme_accent").append(',');
|
|
|
|
builder.append(theme_accent).append(',');
|
2019-11-13 09:05:20 +01:00
|
|
|
builder.append('\n');
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
builder.append("theme_text_color").append(',');
|
|
|
|
builder.append(theme_text_color).append(',');
|
2019-11-13 09:05:20 +01:00
|
|
|
builder.append('\n');
|
|
|
|
|
2019-11-13 10:47:00 +01:00
|
|
|
builder.append("theme_primary").append(',');
|
|
|
|
builder.append(theme_primary).append(',');
|
2019-11-13 09:05:20 +01:00
|
|
|
builder.append('\n');
|
|
|
|
|
|
|
|
|
|
|
|
pw.write(builder.toString());
|
|
|
|
pw.close();
|
|
|
|
String message = getString(R.string.data_export_theme_success);
|
|
|
|
Intent intentOpen = new Intent();
|
|
|
|
intentOpen.setAction(android.content.Intent.ACTION_VIEW);
|
|
|
|
Uri uri = Uri.parse("file://" + fullPath);
|
|
|
|
intentOpen.setDataAndType(uri, "text/csv");
|
|
|
|
String title = getString(R.string.data_export_theme);
|
|
|
|
String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
|
|
|
|
String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(getActivity()));
|
2020-04-09 18:57:12 +02:00
|
|
|
SQLiteDatabase db = Sqlite.getInstance(getActivity().getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
2019-11-13 09:05:20 +01:00
|
|
|
Account account = new AccountDAO(getActivity(), db).getUniqAccount(userId, instance);
|
|
|
|
Helper.notify_user(getActivity(), account, intentOpen, BitmapFactory.decodeResource(getResources(),
|
|
|
|
Helper.getMainLogo(getActivity())), Helper.NotifType.BACKUP, title, message);
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
Toasty.error(getActivity(), getString(R.string.toast_error), Toast.LENGTH_LONG).show();
|
|
|
|
}
|
|
|
|
}
|
2019-11-06 14:09:38 +01:00
|
|
|
}
|