package com.steps.geosms;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.ioane.sharvadze.geosms.R;
import com.steps.geosms.utils.Utils;
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
if(getSupportActionBar() != null)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private static void showOpenSourceLicenses(Context context){
AlertDialog.Builder alert = new AlertDialog.Builder(context);
alert.setTitle(R.string.open_source_licenses);
WebView wv = new WebView(context);
wv.loadUrl("file:///android_asset/licenses.html");
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
alert.setView(wv);
alert.setNegativeButton("Close", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
alert.show();
}
/**
* A placeholder fragment containing a simple view.
*/
public static class SettingsFragment extends PreferenceFragment
implements SharedPreferences.OnSharedPreferenceChangeListener{
@SuppressWarnings("unused")
private static final String TAG = SettingsFragment.class.getSimpleName();
public SettingsFragment() {}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_general);
Preference licenses = getPreferenceManager().findPreference("open_source_licenses");
licenses.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
showOpenSourceLicenses(getActivity());
return true;
}
});
Preference notifications = getPreferenceManager().findPreference("notifications");
if(!Utils.isDefaultSmsApp(getActivity().getApplicationContext()))
notifications.setEnabled(false);
Preference language = getPreferenceManager().findPreference("pref_language");
language.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
ListPreference lp = (ListPreference)preference;
if(TextUtils.equals((String)newValue,"0")){
setLocale(lp,"ka");
}else{
setLocale(lp,null);
}
return true;
}
});
MyPreferencesManager.getWebSmsPreferences(getActivity().getBaseContext()).
registerOnSharedPreferenceChangeListener(this);
getPreferenceManager().setSharedPreferencesMode(MODE_PRIVATE);
SharedPreferences preferences = getPreferenceManager().getSharedPreferences();
onSharedPreferenceChanged(preferences,MyPreferencesManager.WEBSMS_USERNAME);
onSharedPreferenceChanged(preferences,MyPreferencesManager.WEBSMS_NAME);
}
public void setLocale(final ListPreference lp,final String lang) {
final String oldVal = lp.getValue();
android.support.v7.app.AlertDialog.Builder builder =
new android.support.v7.app.AlertDialog.Builder(getActivity());
builder.setPositiveButton(R.string.restart, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MyApplication.updateLanguage(getActivity(), lang);
restart(getActivity(),100);
}
}).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
lp.setValue(oldVal);
}
}).setTitle(R.string.restart_request_title)
.setMessage(getString(R.string.restart_app_request)).show();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Preference pref = findPreference(key);
if (key.equals(MyPreferencesManager.WEBSMS_USERNAME)) {
pref.setSummary(sharedPreferences.getString(key, ""));
}else if(key.equals(MyPreferencesManager.WEBSMS_NAME)){
ListPreference listPreference = (ListPreference)pref;
int index = listPreference.findIndexOfValue(sharedPreferences.getString(key,"-1"));
pref.setSummary(index >= 0
? listPreference.getEntries()[index]
: null);
}
}
public static void restart(Context context, int delay) {
if (delay == 0) {
delay = 1;
}
Log.e("", "restarting app");
Intent restartIntent = context.getPackageManager()
.getLaunchIntentForPackage(context.getPackageName() );
PendingIntent intent = PendingIntent.getActivity(
context, 0,
restartIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.RTC, System.currentTimeMillis() + delay, intent);
System.exit(2);
}
}
}