package com.safemobile.safedispatch; import java.util.Locale; import com.safemobile.adapters.LanguageSpinnerAdapter; import com.safemobile.lib.AppParams; import com.safemobile.lib.SM; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Configuration; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; public class SetupActivity extends Activity { /* Preferences */ private SharedPreferences.Editor editor; //private String IP, PORT, AUDIOPORT, COMPORT, LANGUAGE; /* Visual Elements */ private EditText appServerIP, appServerPort; private LinearLayout layoutPath; private Button btn_save; /* Misc */ private Context context; private TabLayoutActivity parentTab; /* Language */ private String[] Languages = {"English", "German", "Turkish", "Romanian", "Russian", "Spanish"}; private ImageView imageLanguage; private LinearLayout layoutSpinnerLanguage; private TextView textViewSpinnerLanguage; private Bundle savedInstanceState; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.savedInstanceState = savedInstanceState; context = this; // get parentTab parentTab = (TabLayoutActivity)getParent(); // get settings loadSettings(); Locale locale = new Locale(AppParams.LANGUAGETMP); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); Languages = new String[] {getString(R.string.en), getString(R.string.de), getString(R.string.tr), getString(R.string.ro), getString(R.string.ru), getString(R.string.es)}; // set contextView setContentView(R.layout.tabsetup); layoutSpinnerLanguage = findViewById(R.id.layoutSpinnerLanguage); layoutSpinnerLanguage.setOnClickListener(LanguageListener); imageLanguage = findViewById(R.id.imageLanguage); textViewSpinnerLanguage = findViewById(R.id.textViewSpinnerLanguage); // change spinner icon and selected language according to tmpLanguage switch (AppParams.LANGUAGETMP) { case "en": imageLanguage.setImageResource(R.drawable.en); textViewSpinnerLanguage.setText(getString(R.string.en)); break; case "de": imageLanguage.setImageResource(R.drawable.de); textViewSpinnerLanguage.setText(getString(R.string.de)); break; case "tr": imageLanguage.setImageResource(R.drawable.tr); textViewSpinnerLanguage.setText(getString(R.string.tr)); break; case "ro": imageLanguage.setImageResource(R.drawable.ro); textViewSpinnerLanguage.setText(getString(R.string.ro)); break; case "es": imageLanguage.setImageResource(R.drawable.es); textViewSpinnerLanguage.setText(getString(R.string.es)); break; case "ru": imageLanguage.setImageResource(R.drawable.ru); textViewSpinnerLanguage.setText(getString(R.string.ru)); break; } // get visual elements appServerIP = findViewById(R.id.appServerIP); appServerPort = findViewById(R.id.appServerPort); // hide path layout used only on Pad/Pod layoutPath = findViewById(R.id.layoutPath); layoutPath.setVisibility(View.GONE); btn_save = findViewById(R.id.btn_save); btn_save.setOnClickListener(v -> saveSettings()); // set values if(!AppParams.IP.equals("n/a")) appServerIP.setText(AppParams.IP); if(!AppParams.PORT.equals("n/a")) appServerPort.setText(AppParams.PORT); } @Override public void onBackPressed() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(getString(R.string.exit)) .setCancelable(false) .setNeutralButton(getString(R.string.logout), (dialog, id) -> parentTab.whenBackPressed(AppParams.ActivityResult.logout)) .setPositiveButton(getString(R.string.ext), (dialog, id) -> parentTab.whenBackPressed(AppParams.ActivityResult.exit)) .setNegativeButton(getString(R.string.cancel), (dialog, id) -> dialog.cancel()); AlertDialog alert = builder.create(); alert.show(); } // listener when select language pressed private final OnClickListener LanguageListener = new OnClickListener() { @Override public void onClick(View v) { final LanguageSpinnerAdapter adapter = new LanguageSpinnerAdapter(context, android.R.layout.simple_spinner_item, Languages, getLayoutInflater()); AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(getString(R.string.selLanguage)); builder.setAdapter(adapter , (dialog, which) -> { textViewSpinnerLanguage.setText(adapter.getItem(which)); switch(which) { case 0: imageLanguage.setImageResource(R.drawable.en); AppParams.LANGUAGETMP = "en"; onCreate(savedInstanceState); parentTab.changeLanguage(); break; case 1: imageLanguage.setImageResource(R.drawable.de); AppParams.LANGUAGETMP = "de"; onCreate(savedInstanceState); parentTab.changeLanguage(); break; case 2: imageLanguage.setImageResource(R.drawable.tr); AppParams.LANGUAGETMP = "tr"; onCreate(savedInstanceState); parentTab.changeLanguage(); break; case 3: imageLanguage.setImageResource(R.drawable.ro); AppParams.LANGUAGETMP = "ro"; onCreate(savedInstanceState); parentTab.changeLanguage(); break; case 4: imageLanguage.setImageResource(R.drawable.ru); AppParams.LANGUAGETMP = "ru"; onCreate(savedInstanceState); parentTab.changeLanguage(); break; case 5: imageLanguage.setImageResource(R.drawable.es); AppParams.LANGUAGETMP = "es"; onCreate(savedInstanceState); parentTab.changeLanguage(); break; } }); AlertDialog alert = builder.create(); alert.show(); } }; // load settings public void loadSettings() { try { // get Preferences for SafeDispatch AppParams.prefs = getSharedPreferences(getPackageName(), MODE_PRIVATE); // get default IP AppParams.IP = AppParams.prefs.getString("ip", "n/a"); // get default communication port AppParams.PORT = AppParams.prefs.getString("port", "n/a"); // get default audio port //AUDIOPORT = prefs.getString("audioport", "n/a"); // get default com port //COMPORT = prefs.getString("comport", "n/a"); // get Language AppParams.LANGUAGE = AppParams.prefs.getString("language", parentTab.DATABASE_LANGUAGE); } catch(Exception ex) { Log.e("Exception", "loadSettings exception"); } } public void saveSettings() { // get editor editor = AppParams.prefs.edit(); // save old IP and PORT values String oldIP = AppParams.IP; String oldPort = AppParams.PORT; editor.putString("ip", appServerIP.getText().toString()); editor.putString("port", appServerPort.getText().toString()); editor.putString("language", AppParams.LANGUAGETMP); boolean result = editor.commit(); // saved completed if (result) Toast.makeText(context, "Settings saved successfully.", Toast.LENGTH_LONG).show(); else Toast.makeText(context, "Settings failed to complete!", Toast.LENGTH_LONG).show(); // if port or IP changed if((!appServerIP.getText().toString().equalsIgnoreCase(AppParams.IP) || !appServerPort.getText().toString().equalsIgnoreCase(AppParams.PORT)) && !AppParams.DEMO) { SM.Debug("### SETTINGS ###", "IP and/or PORT had been changed"); // load new settings parentTab.loadSettings(); parentTab.removeITCPListener(); // recreateTCP parentTab.stopTCP(); parentTab.recreateTCPConnection(); /* // stop old TCP parentTab.stopTCP(); parentTab.stopTCPParser(); // recreate TCP with new settings parentTab.loadSettings(); parentTab.tcpInit(); */ // start thread to add listener /* SM.Debug("##### initTCPRUN"); new Thread(new Runnable() { public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } parentTab.myHandler.post(parentTab.initTCPRUN); } }).start();*/ } // show dialog //showDialog(result); } }