safedispatch-mobile/safeDispatch/src/main/java/com/safemobile/safedispatch/SetupActivity.java

248 lines
8.7 KiB
Java

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);
}
}