package com.sabdroidex.activity;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.preference.Preference;
import android.view.MenuItem;
import android.widget.Toast;
import com.android.actionbarcompat.ActionBarPreferencesActivity;
import com.sabdroidex.R;
import com.sabdroidex.utils.Preferences;
import com.sabdroidex.utils.SABDroidConstants;
import com.utils.FileUtil;
import org.json.JSONObject;
import java.io.File;
import java.util.Iterator;
public class SettingsActivity extends ActionBarPreferencesActivity {
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getActionBar().setDisplayHomeAsUpEnabled(true);
}
getPreferenceManager().setSharedPreferencesName(SABDroidConstants.PREFERENCES_KEY);
addPreferencesFromResource(R.xml.preferences);
setSummaryChangeListener(Preferences.SABNZBD_URL, R.string.setting_sabnzbd_url);
setSummaryChangeListener(Preferences.SABNZBD_URL_EXTENTION, R.string.setting_sabnzbd_url_extention);
setSummaryChangeListener(Preferences.SABNZBD_PORT, R.string.setting_sabnzbd_port);
setSummaryChangeListener(Preferences.SABNZBD_RATE, R.string.setting_sabnzbd_refresh_rate);
setSummaryChangeListener(Preferences.SABNZBD_API_KEY, R.string.setting_sabnzbd_api_key);
setSummaryChangeListener(Preferences.SICKBEARD_URL, R.string.setting_sickbeard_url);
setSummaryChangeListener(Preferences.SICKBEARD_URL_EXTENTION, R.string.setting_sickbeard_url_extention);
setSummaryChangeListener(Preferences.SICKBEARD_PORT, R.string.setting_sickbeard_port);
setSummaryChangeListener(Preferences.SICKBEARD_RATE, R.string.setting_sabnzbd_refresh_rate);
setSummaryChangeListener(Preferences.SICKBEARD_API_KEY, R.string.setting_sickbeard_api_key);
setSummaryChangeListener(Preferences.COUCHPOTATO_URL, R.string.setting_couchpotato_url);
setSummaryChangeListener(Preferences.COUCHPOTATO_URL_EXTENTION, R.string.setting_couchpotato_url_extention);
setSummaryChangeListener(Preferences.COUCHPOTATO_PORT, R.string.setting_sickbeard_port);
setSummaryChangeListener(Preferences.COUCHPOTATO_API_KEY, R.string.setting_couchpotato_api_key);
setBackupClickListener(Preferences.BACKUP);
setRestoreClickListener(Preferences.RESTORE);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
break;
}
return true;
}
@SuppressWarnings("deprecation")
private void setSummaryChangeListener(String prefKey, final int resId) {
final Preference preference = findPreference(prefKey);
String currentValue = getSharedPreferences(SABDroidConstants.PREFERENCES_KEY, 0).getString(prefKey, null);
if (currentValue != null) {
preference.setSummary(currentValue);
}
preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue != null) {
preference.setSummary(newValue.toString());
return true;
}
else {
preference.setSummary(getString(resId));
return false;
}
}
});
}
private void setBackupClickListener(String prefKey) {
final Preference preference = findPreference(prefKey);
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
String json = null;
SharedPreferences sharedPreferences = getSharedPreferences(SABDroidConstants.PREFERENCES_KEY, MODE_PRIVATE);
try {
JSONObject jsonObject = new JSONObject();
for (Iterator iterator = sharedPreferences.getAll().keySet().iterator() ;iterator.hasNext();) {
String key = (String) iterator.next();
jsonObject.put(key, sharedPreferences.getAll().get(key));
}
json = jsonObject.toString(4);
}
catch (Exception e) {
//
}
finally {
try {
FileUtil.saveFileFromCharArray(FileUtil.SABDROIDEX + File.separator + Preferences.BACKUP_FILE, json.toCharArray());
Toast.makeText(SettingsActivity.this, getString(R.string.setting_backup_done), Toast.LENGTH_LONG).show();
}
catch (Exception e) {
//
}
}
return true;
}
});
}
private void setRestoreClickListener(String prefKey) {
final Preference preference = findPreference(prefKey);
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
char[] data = FileUtil.getFileAsCharArray(FileUtil.SABDROIDEX + File.separator + Preferences.BACKUP_FILE);
if (data == null) {
return false;
}
String json = new String(data);
SharedPreferences sharedPreferences = getSharedPreferences(SABDroidConstants.PREFERENCES_KEY, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
try {
JSONObject jsonObject = new JSONObject(json);
Iterator iterator = jsonObject.keys();
while (iterator.hasNext()) {
String key = (String) iterator.next();
if (jsonObject.get(key) instanceof String)
editor.putString(key, (String) jsonObject.get(key));
if (jsonObject.get(key) instanceof Number)
editor.putInt(key, (Integer) jsonObject.get(key));
}
editor.commit();
Toast.makeText(SettingsActivity.this, getString(R.string.setting_backup_restored), Toast.LENGTH_LONG).show();
}
catch (Exception e) {
//
}
return true;
}
});
}
}