Android Open Source - TaskButler Settings Activity






From Project

Back to project page TaskButler.

License

The source code is released under:

GNU General Public License

If you think the Android project TaskButler listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/* 
 * SettingsActivity.java/*from  w w w  .j  a v a 2 s. c  om*/
 * 
 * Copyright 2012 Jonathan Hasenzahl, James Celona, Dhimitraq Jorgji
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package edu.worcester.cs499summer2012.activity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceManager;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockPreferenceActivity;
import com.actionbarsherlock.view.MenuItem;

import edu.worcester.cs499summer2012.R;
import edu.worcester.cs499summer2012.adapter.TaskListAdapter;
import edu.worcester.cs499summer2012.service.TaskButlerService;
import edu.worcester.cs499summer2012.service.TaskButlerWidgetProvider;
import edu.worcester.cs499summer2012.service.WakefulIntentService;

public class SettingsActivity extends SherlockPreferenceActivity implements 
  OnPreferenceClickListener, OnPreferenceChangeListener {

  public static final String AUTO_SORT = "auto_sort";
  public static final String CUSTOM_SORT = "custom_sort";
  public static final String HIDE_COMPLETED = "hide_completed";
  public static final String DEFAULT_HOUR = "default_hour";
  public static final String VIBRATE_ON_ALARM = "vibrate_on_alarm";
  public static final String REMINDER_TIME = "reminder_time";
  public static final String ALARM_TIME = "alarm_time";
  public static final String SORT_TYPE = "sort_type";
  public static final String DISPLAY_CATEGORY = "display_category";
  
  public static final String DEFAULT_REMINDER_TIME = "6";
  public static final String DEFAULT_ALARM_TIME = "15";
  public static final String DEFAULT_HOUR_VALUE = "12";
  
  private SharedPreferences prefs;
  private SharedPreferences.Editor prefs_editor;
  
  private CheckBoxPreference cbp_auto_sort;
  private CheckBoxPreference cbp_custom_sort;
  private CheckBoxPreference cpb_vibrate;
  private ListPreference lp_reminder_time;
  private ListPreference lp_alarm_time;
  private ListPreference lp_default_hour;
  
    @SuppressWarnings("deprecation")
  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.layout.preferences);
        
        // Allow Action bar icon to act as a button
        ActionBar action_bar = getSupportActionBar();
        action_bar.setIcon(R.drawable.ic_settings);
        action_bar.setHomeButtonEnabled(true);
        action_bar.setDisplayHomeAsUpEnabled(true);

    // Read preferences from file
    prefs = PreferenceManager.getDefaultSharedPreferences(this);
    prefs_editor = prefs.edit();
        
    // Initialize preferences objects
        cbp_auto_sort = (CheckBoxPreference) this.findPreference(AUTO_SORT);
        cbp_custom_sort = (CheckBoxPreference) this.findPreference(CUSTOM_SORT);
        cpb_vibrate = (CheckBoxPreference) this.findPreference(VIBRATE_ON_ALARM);
        lp_reminder_time = (ListPreference) this.findPreference(REMINDER_TIME);
        lp_alarm_time = (ListPreference) this.findPreference(ALARM_TIME);
        lp_default_hour = (ListPreference) this.findPreference(DEFAULT_HOUR);
        
        // Set listeners
        cbp_auto_sort.setOnPreferenceClickListener(this);
        cbp_custom_sort.setOnPreferenceClickListener(this);
        lp_reminder_time.setOnPreferenceChangeListener(this);
        lp_alarm_time.setOnPreferenceChangeListener(this);
        lp_default_hour.setOnPreferenceChangeListener(this);
        cpb_vibrate.setOnPreferenceChangeListener(this);
        
        // Set checkbox states
        if (prefs.getInt(SORT_TYPE, TaskListAdapter.AUTO_SORT) == TaskListAdapter.AUTO_SORT) {
          cbp_auto_sort.setChecked(true);
          cbp_custom_sort.setChecked(false);
        } else {
          cbp_auto_sort.setChecked(false);
          cbp_custom_sort.setChecked(true);
        }
        
        // Set ListPreferences
        lp_reminder_time.setSummary(getReminderSummary(REMINDER_TIME, 
            prefs.getString(REMINDER_TIME, DEFAULT_REMINDER_TIME)));
        lp_alarm_time.setSummary(getReminderSummary(ALARM_TIME, 
            prefs.getString(ALARM_TIME, DEFAULT_ALARM_TIME)));
        lp_default_hour.setSummary(getHourSummary(prefs.getString(DEFAULT_HOUR, DEFAULT_HOUR_VALUE)));
    }
    
    private String getReminderSummary(String key, String value) {
      StringBuilder builder = new StringBuilder();
      
      builder.append("Every ");
      builder.append(value);
      
      if (key.equals(REMINDER_TIME))
        builder.append(" hours");
      else
        builder.append(" minutes");
        
      return builder.toString();
    }
    
    private String getHourSummary(String value) {
    String summary;
    
    if (value.equals("0"))
      summary = "Midnight";
    else if (value.equals("12"))
      summary = "Noon";
    else if (value.equals("6") || value.equals("9"))
      summary = value + ":00 am";
    else if (value.equals("15"))
      summary = "3:00 pm";
    else
      summary = "6:00 pm";
              
    return summary;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
      if (item.getItemId() == android.R.id.home) {
        finish();
        return true;
      } else
        return super.onOptionsItemSelected(item);
    }

  @Override
  public boolean onPreferenceClick(Preference p) {
    String key = p.getKey();
    
    if (key.equals(AUTO_SORT)) {
          cbp_auto_sort.setChecked(true);
          cbp_custom_sort.setChecked(false);
          prefs_editor.putInt(SORT_TYPE, TaskListAdapter.AUTO_SORT);
          prefs_editor.commit();
          
      // Update homescreen widget (after change has been saved to DB)
      TaskButlerWidgetProvider.updateWidget(this);
      return true;
    }
    
    if (key.equals(CUSTOM_SORT)) {
          cbp_auto_sort.setChecked(false);
          cbp_custom_sort.setChecked(true);
          prefs_editor.putInt(SORT_TYPE, TaskListAdapter.CUSTOM_SORT);
          prefs_editor.commit();
          startActivity(new Intent(this, CustomSortActivity.class));
      return true;
    }
    
    return false;
  }

  @Override
  public boolean onPreferenceChange(Preference preference, Object newValue) {
    String key = preference.getKey();
    
    if (key.equals(REMINDER_TIME) || key.equals(ALARM_TIME) || key.equals(VIBRATE_ON_ALARM)) {
      if (key.equals(REMINDER_TIME))
        lp_reminder_time.setSummary(getReminderSummary(REMINDER_TIME, (String) newValue));
      else if (key.equals(ALARM_TIME))
        lp_alarm_time.setSummary(getReminderSummary(ALARM_TIME, (String) newValue));
        
      // Start service which will update all of the task alarms with the new reminder intervals
      WakefulIntentService.acquireStaticLock(this);
      this.startService(new Intent(this, TaskButlerService.class));
      
      return true;   
    }
    
    if (key.equals(DEFAULT_HOUR)) {
      lp_default_hour.setSummary(getHourSummary((String) newValue));
      return true;
    }
      
    return false;
  }
}




Java Source Code List

edu.worcester.cs499summer2012.activity.AddTaskActivity.java
edu.worcester.cs499summer2012.activity.BaseTaskActivity.java
edu.worcester.cs499summer2012.activity.CustomSortActivity.java
edu.worcester.cs499summer2012.activity.EditCategoriesActivity.java
edu.worcester.cs499summer2012.activity.EditTaskActivity.java
edu.worcester.cs499summer2012.activity.MainActivity.java
edu.worcester.cs499summer2012.activity.SettingsActivity.java
edu.worcester.cs499summer2012.activity.ViewTaskActivity.java
edu.worcester.cs499summer2012.adapter.CategoryListAdapter.java
edu.worcester.cs499summer2012.adapter.ComparatorListAdapter.java
edu.worcester.cs499summer2012.adapter.PriorityListAdapter.java
edu.worcester.cs499summer2012.adapter.TaskListAdapter.java
edu.worcester.cs499summer2012.comparator.TaskAutoComparator.java
edu.worcester.cs499summer2012.comparator.TaskCategoryComparator.java
edu.worcester.cs499summer2012.comparator.TaskCompletionComparator.java
edu.worcester.cs499summer2012.comparator.TaskDateCreatedComparator.java
edu.worcester.cs499summer2012.comparator.TaskDateDueComparator.java
edu.worcester.cs499summer2012.comparator.TaskDateModifiedComparator.java
edu.worcester.cs499summer2012.comparator.TaskNameComparator.java
edu.worcester.cs499summer2012.comparator.TaskPriorityComparator.java
edu.worcester.cs499summer2012.database.DatabaseHandler.java
edu.worcester.cs499summer2012.database.TasksDataSource.java
edu.worcester.cs499summer2012.service.NotificationHelper.java
edu.worcester.cs499summer2012.service.OnAlarmReceiver.java
edu.worcester.cs499summer2012.service.OnBootReceiver.java
edu.worcester.cs499summer2012.service.TaskAlarm.java
edu.worcester.cs499summer2012.service.TaskButlerService.java
edu.worcester.cs499summer2012.service.TaskButlerWidgetProvider.java
edu.worcester.cs499summer2012.service.WakefulIntentService.java
edu.worcester.cs499summer2012.task.BackupManager.java
edu.worcester.cs499summer2012.task.Category.java
edu.worcester.cs499summer2012.task.Comparator.java
edu.worcester.cs499summer2012.task.Task.java
edu.worcester.cs499summer2012.task.ToastMaker.java