diff --git a/app/src/main/java/org/sportiduino/app/FragmentReadCard.java b/app/src/main/java/org/sportiduino/app/FragmentReadCard.java index 0aea957..c6d7af1 100644 --- a/app/src/main/java/org/sportiduino/app/FragmentReadCard.java +++ b/app/src/main/java/org/sportiduino/app/FragmentReadCard.java @@ -21,6 +21,7 @@ public class FragmentReadCard extends NfcFragment implements IntentReceiver { private FragmentReadCardBinding binding; + private View currentView; @Override public View onCreateView( @@ -34,6 +35,7 @@ public View onCreateView( @Override public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + this.currentView = view; binding.textViewInfo.setText(R.string.bring_card); binding.layoutTagInfo.setVisibility(View.GONE); @@ -100,7 +102,7 @@ protected void onPostExecute(Boolean result) { binding.textViewTagType.setText(String.format(getString(R.string.tag_type_s), card.adapter.tagType.name())); binding.textViewInfo.setText(card.parseData(buffer)); } else { - binding.textViewInfo.setText(Util.error(getString(R.string.reading_card_failed))); + binding.textViewInfo.setText(Util.error(getString(R.string.reading_card_failed), currentView)); } } } diff --git a/app/src/main/java/org/sportiduino/app/FragmentStationSettings.java b/app/src/main/java/org/sportiduino/app/FragmentStationSettings.java index 6f76fd2..06d7ebc 100644 --- a/app/src/main/java/org/sportiduino/app/FragmentStationSettings.java +++ b/app/src/main/java/org/sportiduino/app/FragmentStationSettings.java @@ -48,6 +48,7 @@ public class FragmentStationSettings extends NfcFragment { private int timerCount; private Timer timer; private SharedPreferences.OnSharedPreferenceChangeListener preferenceChangeListener; + private View currentView; @Override public View onCreateView( @@ -62,6 +63,7 @@ public View onCreateView( @Override public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + this.currentView = view; SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(requireActivity()); updatePasswordFromSharedPreferences(sharedPref); @@ -360,12 +362,12 @@ protected Boolean doInBackground(Void... params) { @Override protected void onPostExecute(Boolean result) { if (result) { - binding.textViewNfcInfo.setText(Util.ok(getString(R.string.data_written_to_card_successfully))); + binding.textViewNfcInfo.setText(Util.ok(getString(R.string.data_written_to_card_successfully), currentView)); if (binding.radioButtonMasterTime.isChecked()) { startCountdownTimer(); } } else { - binding.textViewNfcInfo.setText(Util.error(getString(R.string.writing_card_failed))); + binding.textViewNfcInfo.setText(Util.error(getString(R.string.writing_card_failed), currentView)); } } } diff --git a/app/src/main/java/org/sportiduino/app/FragmentWriteCard.java b/app/src/main/java/org/sportiduino/app/FragmentWriteCard.java index 2fa27e0..58590ff 100644 --- a/app/src/main/java/org/sportiduino/app/FragmentWriteCard.java +++ b/app/src/main/java/org/sportiduino/app/FragmentWriteCard.java @@ -24,6 +24,7 @@ public class FragmentWriteCard extends NfcFragment { private FragmentWriteCardBinding binding; private int cardNumber; + private View currentView; @Override public View onCreateView( @@ -37,6 +38,7 @@ public View onCreateView( @Override public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + this.currentView = view; binding.textViewNfcInfo.setText(R.string.bring_card); @@ -113,12 +115,12 @@ protected Boolean doInBackground(Void... params) { protected void onPostExecute(Boolean result) { binding.progressBar.setVisibility(View.GONE); if (result) { - binding.textViewNfcInfo.setText(Util.ok(getString(R.string.data_written_to_card_successfully))); + binding.textViewNfcInfo.setText(Util.ok(getString(R.string.data_written_to_card_successfully), currentView)); if (binding.checkBoxAutoIncrement.isChecked() && !binding.checkBoxCleaningOnly.isChecked()) { binding.editTextCardNumber.setText(String.valueOf(cardNumber + 1)); } } else { - binding.textViewNfcInfo.setText(Util.error(getString(R.string.writing_card_failed))); + binding.textViewNfcInfo.setText(Util.error(getString(R.string.writing_card_failed), currentView)); } } } diff --git a/app/src/main/java/org/sportiduino/app/MainActivity.java b/app/src/main/java/org/sportiduino/app/MainActivity.java index 9a94242..218c675 100644 --- a/app/src/main/java/org/sportiduino/app/MainActivity.java +++ b/app/src/main/java/org/sportiduino/app/MainActivity.java @@ -8,10 +8,6 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatDelegate; -import androidx.navigation.NavController; -import androidx.navigation.Navigation; -import androidx.navigation.ui.AppBarConfiguration; -import androidx.navigation.ui.NavigationUI; import androidx.preference.PreferenceManager; import org.sportiduino.app.databinding.ActivityMainBinding; diff --git a/app/src/main/java/org/sportiduino/app/SettingsFragment.java b/app/src/main/java/org/sportiduino/app/SettingsFragment.java index b427db1..868c66a 100644 --- a/app/src/main/java/org/sportiduino/app/SettingsFragment.java +++ b/app/src/main/java/org/sportiduino/app/SettingsFragment.java @@ -2,17 +2,34 @@ import android.os.Bundle; +import androidx.appcompat.app.AppCompatDelegate; import androidx.fragment.app.DialogFragment; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; +import androidx.preference.PreferenceManager; -public class SettingsFragment extends PreferenceFragmentCompat { +public class SettingsFragment extends PreferenceFragmentCompat implements PreferenceManager.OnPreferenceTreeClickListener { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.preferences, rootKey); } + @Override + public boolean onPreferenceTreeClick(Preference preference) { + if (preference.getKey().equals("night_mode")) { + if (AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_NO) { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); + } else { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); + } + + return true; + } + + return false; + } + @Override public void onDisplayPreferenceDialog(Preference preference) { // Try if the preference is one of our custom Preferences diff --git a/app/src/main/java/org/sportiduino/app/sportiduino/State.java b/app/src/main/java/org/sportiduino/app/sportiduino/State.java index 3daa107..33fdd21 100644 --- a/app/src/main/java/org/sportiduino/app/sportiduino/State.java +++ b/app/src/main/java/org/sportiduino/app/sportiduino/State.java @@ -116,9 +116,9 @@ public String toString() { } if (isOk()) { - return Util.coloredHtmlString(App.str(R.string.battery_ok) + voltageText, "#008000"); + return Util.coloredHtmlString(App.str(R.string.battery_ok) + voltageText, Util.colorToHexCode(R.color.green)); } - return Util.coloredHtmlString(App.str(R.string.battery_low) + voltageText, "red"); + return Util.coloredHtmlString(App.str(R.string.battery_low) + voltageText, Util.colorToHexCode(R.color.red)); } } @@ -166,9 +166,9 @@ public String toString() { } clockStr += deltaStr; if (timestamp < (nowSec - 20) || timestamp > (nowSec + 17)) { - clockStr = Util.coloredHtmlString(clockStr, "red"); + clockStr = Util.coloredHtmlString(clockStr, Util.colorToHexCode(R.color.red)); } else if (timestamp < (nowSec - 5) || timestamp > nowSec) { - clockStr = Util.coloredHtmlString(clockStr, "#FFC300"); + clockStr = Util.coloredHtmlString(clockStr, Util.colorToHexCode(R.color.yellow)); } stringState += App.str(R.string.state_clock_) + " " + clockStr; stringState += App.str(R.string.state_alarm_) + " " + Util.dformat.format(new Date(wakeupTimestamp*1000)); diff --git a/app/src/main/java/org/sportiduino/app/sportiduino/Util.java b/app/src/main/java/org/sportiduino/app/sportiduino/Util.java index 4c503b5..890b1bc 100644 --- a/app/src/main/java/org/sportiduino/app/sportiduino/Util.java +++ b/app/src/main/java/org/sportiduino/app/sportiduino/Util.java @@ -4,6 +4,8 @@ import android.text.SpannableString; import android.text.style.BackgroundColorSpan; +import android.view.View; +import androidx.core.content.ContextCompat; import org.sportiduino.app.App; import org.sportiduino.app.R; @@ -60,12 +62,28 @@ public static SpannableString error(String s) { return colorString(s, App.color(R.color.error_text_bg)); } + public static SpannableString error(String s, View view) { + int color = ContextCompat.getColor(view.getContext(), R.color.error_text_bg); + + return colorString(s, color); + } + public static SpannableString ok(String s) { return colorString(s, App.color(R.color.ok_text_bg)); } + public static SpannableString ok(String s, View view) { + int color = ContextCompat.getColor(view.getContext(), R.color.ok_text_bg); + + return colorString(s, color); + } + public static String coloredHtmlString(String s, String color) { return String.format("%s", color, s); } + + public static String colorToHexCode(Integer color) { + return String.format("#%06x", App.color(color) & 0x00ffffff); + } } diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000..3e0d426 --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,7 @@ + + + #999999 + #980b0b + @color/red + @color/green + diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index 1a5c583..c1fbb8c 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -1,16 +1,9 @@ - - + + + -