diff --git a/app/src/main/java/com/blogspot/developersu/ns_usbloader/SettingsActivity.java b/app/src/main/java/com/blogspot/developersu/ns_usbloader/SettingsActivity.java index 0c8266f..367fcbf 100644 --- a/app/src/main/java/com/blogspot/developersu/ns_usbloader/SettingsActivity.java +++ b/app/src/main/java/com/blogspot/developersu/ns_usbloader/SettingsActivity.java @@ -5,16 +5,29 @@ import android.graphics.Color; import android.os.Bundle; import android.text.Editable; import android.text.InputFilter; -import android.text.Spanned; import android.text.TextWatcher; import android.view.MenuItem; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; import android.widget.EditText; +import android.widget.Spinner; import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.widget.SwitchCompat; import androidx.appcompat.widget.Toolbar; +import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM; +import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO; +import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES; + public class SettingsActivity extends AppCompatActivity { + private static final int SYSTEM_DEFAULT = 0; + private static final int DAY_THEME = 1; + private static final int NIGHT_THEME = 2; + + private Spinner themeSpinner; private EditText nsIp; private EditText servAddr; private EditText servPort; @@ -34,6 +47,22 @@ public class SettingsActivity extends AppCompatActivity { Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + themeSpinner = findViewById(R.id.applicationThemeSpinner); + themeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ + @Override + public void onItemSelected(AdapterView adapterView, View view, int selectedItemPosition, long selectedItemId) { + setApplicationTheme(selectedItemPosition); + } + + @Override + public void onNothingSelected(AdapterView adapterView) { } + }); + + ArrayAdapter themeAdapter = ArrayAdapter.createFromResource(this, + R.array.dayNightSelector, android.R.layout.simple_spinner_item); + themeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + themeSpinner.setAdapter(themeAdapter); // Set NS IP field nsIp = findViewById(R.id.nsIpEditText); servAddr = findViewById(R.id.servAddrTextEdit); @@ -47,11 +76,12 @@ public class SettingsActivity extends AppCompatActivity { // TODO: Disable controls if (savedInstanceState == null){ - SharedPreferences sp = getSharedPreferences("NSUSBloader", MODE_PRIVATE); //.getInt("PROTOCOL", NsConstants.PROTO_TF_USB); - nsIp.setText(sp.getString("SNsIP", "192.168.1.42")); - autoDetectIp.setChecked(sp.getBoolean("SAutoIP", true)); - servAddr.setText(sp.getString("SServerIP", "192.168.1.142")); - servPort.setText(String.valueOf(sp.getInt("SServerPort", 6042))); + SharedPreferences preferences = getSharedPreferences("NSUSBloader", MODE_PRIVATE); //.getInt("PROTOCOL", NsConstants.PROTO_TF_USB); + themeSpinner.setSelection(preferences.getInt("ApplicationTheme", 0)); + nsIp.setText(preferences.getString("SNsIP", "192.168.1.42")); + autoDetectIp.setChecked(preferences.getBoolean("SAutoIP", true)); + servAddr.setText(preferences.getString("SServerIP", "192.168.1.142")); + servPort.setText(String.valueOf(preferences.getInt("SServerPort", 6042))); } // else { } // not needed @@ -108,12 +138,26 @@ public class SettingsActivity extends AppCompatActivity { }); // Shitcode practices end } + private void setApplicationTheme(int itemId){ + switch (itemId){ + case SYSTEM_DEFAULT: + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM); + break; + case DAY_THEME: + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO); + break; + case NIGHT_THEME: + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES); + } + } @Override protected void onDestroy() { super.onDestroy(); SharedPreferences.Editor spEditor = getSharedPreferences("NSUSBloader", MODE_PRIVATE).edit(); + spEditor.putInt("ApplicationTheme", themeSpinner.getSelectedItemPosition()); + if (nsIp.getText().toString().matches("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")) spEditor.putString("SNsIP", nsIp.getText().toString()); @@ -149,21 +193,17 @@ public class SettingsActivity extends AppCompatActivity { return null; }; - private static InputFilter inputFilterForPort = new InputFilter() { - @Override - public CharSequence filter(CharSequence charSequence, int start, int end, Spanned destination, int dStart, int dEnd) { - if (end > start) { - String destTxt = destination.toString(); - String resultingTxt = destTxt.substring(0, dStart) + - charSequence.subSequence(start, end) + - destTxt.substring(dEnd); - if (!resultingTxt.matches ("^[0-9]+")) - return ""; - if (Integer.parseInt(resultingTxt) > 65535) - return ""; - } - return null; + private static InputFilter inputFilterForPort = (charSequence, start, end, destination, dStart, dEnd) -> { + if (end > start) { + String destTxt = destination.toString(); + String resultingTxt = destTxt.substring(0, dStart) + + charSequence.subSequence(start, end) + + destTxt.substring(dEnd); + if (!resultingTxt.matches ("^[0-9]+")) + return ""; + if (Integer.parseInt(resultingTxt) > 65535) + return ""; } + return null; }; - } diff --git a/app/src/main/res/layout/content_settings.xml b/app/src/main/res/layout/content_settings.xml index 83e52d2..ada7f3a 100644 --- a/app/src/main/res/layout/content_settings.xml +++ b/app/src/main/res/layout/content_settings.xml @@ -19,11 +19,42 @@ tools:context=".SettingsActivity" tools:showIn="@layout/activity_settings"> + + + + + + + + + + android:paddingTop="3dp" + android:paddingBottom="3dp" + android:text="@string/tf_net" + android:textStyle="bold|italic" /> + android:inputType="number" + android:importantForAutofill="no" /> @@ -98,6 +131,7 @@ android:digits="0123456789" android:ems="10" android:hint="1024-65535" + android:importantForAutofill="no" android:inputType="number" /> diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 3560f95..532bc83 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -39,4 +39,11 @@ Идет передача данных Уведомление демонстрирует прогресс передачи данных Передача данных + + Системная + Светлая тема + Ночная тема + + Настройки приложения + Тема: diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2d181c0..2f95851 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -16,9 +16,9 @@ Interrupt Open navigation drawer Close navigation drawer - TinFoil USB + Tinfoil USB GoldLeaf v0.5 - TinFoil NET + Tinfoil NET About this app Other Only one file could be selected for GoldLeaf v0.5 @@ -46,4 +46,11 @@ Transfer in progress Notification indicates transfer progress * 中文(繁體) - qazrfv1234\n* 中文(简体) - FFT9 (XXGAME GROUP) + + System default + Day theme + Night theme + + Application settings + Application theme: \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 6370d58..2ec236c 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -15,6 +15,7 @@