package at.tugraz.examreminder.ui;
import android.content.Intent;
import android.os.Build;
import android.preference.CheckBoxPreference;
import android.widget.Toast;
import at.tugraz.examreminder.service.CalendarHelper;
import at.tugraz.examreminder.service.DailyListener;
import at.tugraz.examreminder.service.UpdateService;
import at.tugraz.examreminder.ui.custompreferences.TimePreference;
import com.actionbarsherlock.app.SherlockPreferenceActivity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceManager;
import at.tugraz.examreminder.R;
import com.actionbarsherlock.view.MenuItem;
import com.commonsware.cwac.wakeful.WakefulIntentService;
import java.util.Date;
import java.util.List;
public class SettingsActivity extends SherlockPreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener{
private Context context;
private CheckBoxPreference pref_use_android_calendar;
private ListPreference pref_android_calendar_to_use;
private ListPreference pref_updateFrequency;
private ListPreference pref_useTabletLayout;
private TimePreference pref_updateTime;
private Preference pref_updateNow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = getApplicationContext();
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
addPreferencesFromResource(R.xml.preferences);
pref_use_android_calendar = (CheckBoxPreference) findPreference("pref_use_android_calendar");
pref_android_calendar_to_use = (ListPreference) findPreference("pref_android_calendar_to_use");
pref_updateFrequency = (ListPreference) findPreference("pref_update_frequency");
pref_useTabletLayout = (ListPreference) findPreference("pref_use_tablet_layout");
pref_updateTime = (TimePreference) findPreference("pref_update_time");
pref_updateNow = findPreference("pref_update_now");
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean("pref_use_android_calendar", false).commit();
pref_use_android_calendar.setEnabled(false);
pref_android_calendar_to_use.setEnabled(false);
} else {
boolean use_calendar = PreferenceManager.getDefaultSharedPreferences(context).getBoolean("pref_use_android_calendar", false);
pref_android_calendar_to_use.setEnabled(use_calendar);
updateCalendarList();
}
updateSummaries();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
pref_updateNow.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
handleUpdateNow();
return false;
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onResume() {
super.onResume();
PreferenceManager.getDefaultSharedPreferences(context).registerOnSharedPreferenceChangeListener(this);
updateSummaries();
}
@Override
public void onPause() {
super.onPause();
PreferenceManager.getDefaultSharedPreferences(context).unregisterOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
boolean use_calendar = PreferenceManager.getDefaultSharedPreferences(context).getBoolean("pref_use_android_calendar", false);
pref_android_calendar_to_use.setEnabled(use_calendar);
updateSummaries();
DailyListener.scheduleMe(context); //Always reschedule since most preferences affect this
}
private void updateSummaries() {
pref_android_calendar_to_use.setSummary(pref_android_calendar_to_use.getEntry());
pref_updateFrequency.setSummary(pref_updateFrequency.getEntry());
pref_useTabletLayout.setSummary(pref_useTabletLayout.getEntry());
pref_updateTime.setSummary(pref_updateTime.toString());
Date time = new Date(PreferenceManager.getDefaultSharedPreferences(context).getLong("pref_last_update",0));
pref_updateNow.setSummary(getString(R.string.pref_update_now_summery) + time.toString());
}
private void handleUpdateNow() {
//SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy hh:mm:ss");
//String datetime = format.format(new Date());
//String prefix = getString(R.string.pref_update_now_summery);
//pref_updateNow.setSummary(prefix + datetime + " (didn't actually do anything)");
Intent intent = new Intent(getApplicationContext(), UpdateService.class);
intent.setAction("Blub");
Toast.makeText(this, R.string.update_started, Toast.LENGTH_SHORT).show();
WakefulIntentService.sendWakefulWork(getApplicationContext(), UpdateService.class);
}
private void updateCalendarList() {
CalendarHelper calendarHelper = new CalendarHelper(this);
List<CalendarHelper.Calendar> calendars = calendarHelper.getLocalCalendars();
CharSequence keys[] = new CharSequence[calendars.size()];
CharSequence values[] = new CharSequence[calendars.size()];
for(int i = 0; i < calendars.size(); i++) {
keys[i] = String.valueOf(calendars.get(i).ID);
values[i] = String.valueOf(calendars.get(i).displayName);
}
pref_android_calendar_to_use.setEntries(values);
pref_android_calendar_to_use.setEntryValues(keys);
}
}