MeteoSystem/app/src/main/java/cc/pogoda/mobile/meteosystem/activity/SettingsActivity.java

165 wiersze
5.9 KiB
Java

package cc.pogoda.mobile.meteosystem.activity;
import androidx.appcompat.app.AppCompatActivity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Switch;
import android.widget.TextView;
import cc.pogoda.mobile.meteosystem.R;
import cc.pogoda.mobile.meteosystem.config.AppConfiguration;
import cc.pogoda.mobile.meteosystem.file.ConfigurationFile;
public class SettingsActivity extends AppCompatActivity {
Switch windspdUnitSwitch;
TextView windspdUnitDisplayTv;
ConfigurationFile confFile;
Spinner language;
EditText enditTextMinutesPeriod;
AppCompatActivity act;
private static String languageNameFromShort(String shortName) {
switch (shortName) {
case "en-rUS": return "English";
case "pl": return "Polski";
case "cs": return "Čeština";
case "uk": return "Українська мова";
case "ru": return "Русский";
case "lv": return "Latviešu";
case "de": return "Deutsch";
default: return "AUTO";
}
}
private void updateWindspdUnitTv(boolean b) {
if (windspdUnitDisplayTv != null) {
if (b) {
windspdUnitDisplayTv.setText(R.string.knots_long);
}
else {
windspdUnitDisplayTv.setText(R.string.meters_per_second);
}
confFile.storeToFile();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
confFile = new ConfigurationFile(getBaseContext());
act = this;
windspdUnitDisplayTv = (TextView) findViewById(R.id.textViewSettingsWindspeedUnitDisp);
updateWindspdUnitTv(AppConfiguration.replaceMsWithKnots);
windspdUnitSwitch = (Switch) findViewById(R.id.switchKnots);
if (windspdUnitSwitch != null) {
windspdUnitSwitch.setChecked(AppConfiguration.replaceMsWithKnots);
windspdUnitSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
AppConfiguration.replaceMsWithKnots = b;
updateWindspdUnitTv(b);
}
});
}
enditTextMinutesPeriod = (EditText) findViewById(R.id.editTextNumberSettingsMinTimeRes);
enditTextMinutesPeriod.setText(Integer.toString(AppConfiguration.decimationPeriod));
if (enditTextMinutesPeriod != null) {
enditTextMinutesPeriod.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (i2 > 0) {
try {
int newValue = Integer.valueOf(String.valueOf(charSequence), 10);
if (newValue > 60) {
newValue = 60;
enditTextMinutesPeriod.setText(Integer.toString(newValue));
}
AppConfiguration.decimationPeriod = newValue;
confFile.storeToFile();
}
catch (NumberFormatException e) {
AppConfiguration.decimationPeriod = 0;
}
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
language = (Spinner) findViewById(R.id.spinnerSettingsLanguage);
if (language != null) {
ArrayAdapter spinnerLanguageAdapter = ArrayAdapter.createFromResource(getBaseContext(), R.array.languages, R.layout.spinner_item);
int currentLanguagePosition = spinnerLanguageAdapter.getPosition(SettingsActivity.languageNameFromShort(AppConfiguration.locale));
language.setAdapter(spinnerLanguageAdapter);
// if an item has been found (if no -1 is returned by 'getPosition'
if (currentLanguagePosition >= 0) {
language.setSelection(currentLanguagePosition);
}
language.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String languageSelected = adapterView.getItemAtPosition(i).toString();
switch (languageSelected) {
case "English": AppConfiguration.locale = "en-rUS"; break;
case "Polski": AppConfiguration.locale = "pl"; break;
case "Čeština": AppConfiguration.locale = "cs"; break;
case "Українська мова": AppConfiguration.locale = "uk"; break;
case "Русский": AppConfiguration.locale = "ru"; break;
case "Latviešu": AppConfiguration.locale = "lv"; break;
case "Deutsch": AppConfiguration.locale = "de"; break;
default: AppConfiguration.locale = "default";
}
confFile.storeToFile();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
}
}