Android Open Source - logmypain Headache Record Form Activity






From Project

Back to project page logmypain.

License

The source code is released under:

GNU General Public License

If you think the Android project logmypain 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

package com.logmypain.main.record;
//  www .j  a va  2 s .c o m
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;

import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.text.format.Time;
import android.view.MenuItem;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.SeekBar.OnSeekBarChangeListener;

import com.logmypain.main.record.dialogs.AddTriggersDialogFragment;
import com.logmypain.main.record.dialogs.DateTimeDialogFragment;
import com.logmypain.tasks.ViewRecordsActivity;
import com.logmypain.utils.CalendarUtil;
import com.logmypain.utils.DatabaseHelper;
import com.logmypain.utils.Models.HeadacheRecord;

import com.logmypain.R;

public class HeadacheRecordFormActivity extends FragmentActivity 
implements DateTimeDialogFragment.DateTimeDialogListener{
  private static final Time now = new Time();
  private static final Calendar nowCal = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
  private HeadacheRecord record;
  private DatabaseHelper db;
  private SeekBar intensitySeekBar;
  private TextView intensityInfo;
  private TextView activeDateDisplay;
  private TextView activeTimeDisplay;
  private TextView startDateText;
  private TextView startTimeText;
  private TextView endDateText;
  private TextView endTimeText;
    private EditText notesEditText;
  //private ListView triggersListView;
  //private TriggersAdapter triggersAdapter;
  private Calendar startCal;
  private Calendar endCal;
  
  public enum ActiveDateTimeField{
    START,
    END
  }
  
  private ActiveDateTimeField activeDateTimeField;
    
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_modify_record);
    
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            // Show the Up button in the action bar.
            getActionBar().setDisplayHomeAsUpEnabled(true);
        }
        this.db = new DatabaseHelper(this);
        
        initializeFormFields();
  }
  
  private void initCreate(){
    this.record = new HeadacheRecord();
    this.startCal = nowCal;
  }
  
  private void setupFields(){
        startDateText = (TextView) findViewById(R.id.startDate);
        startTimeText = (TextView) findViewById(R.id.startTime);
        endDateText = (TextView) findViewById(R.id.endDate);
        endTimeText = (TextView) findViewById(R.id.endTime);
        intensitySeekBar = (SeekBar) findViewById(R.id.seekBar1);
        intensityInfo = (TextView) findViewById(R.id.intensityInfo);
        notesEditText = (EditText) findViewById(R.id.notes);
        //triggersListView = (ListView) findViewById(R.id.list_triggers_form);
        //triggersAdapter = new TriggersAdapter(this,
        //        layout.triggers_form_list_item, new ArrayList<Trigger>(), new ArrayList<Trigger>());
        //triggersListView.setAdapter(triggersAdapter);
        setupSeekBar();
  }
  
  private void initializeFormFields(){
    setupFields();
    Intent intent = getIntent();
        long id = intent.getLongExtra("Record_ID", -1);
        if(id > -1){
          this.record = this.db.getRecord(id);
          startCal = record.getStart();
          
          endCal = record.getEnd();
          
          if(startCal != null){
          startDateText.setText(CalendarUtil.getDateDisplay(startCal));
          startTimeText.setText(CalendarUtil.getTimeDisplay(startCal));
          }
          
          if(endCal != null){
              endDateText.setText(CalendarUtil.getDateDisplay(endCal));
              endTimeText.setText(CalendarUtil.getTimeDisplay(endCal));
              }
          
          int intensity = record.getIntensity();
          
          
          if(intensity > -1){
            intensitySeekBar.setProgress(intensity);
          }

            String notes = record.getNotes();
            if(!TextUtils.isEmpty(notes)){
                notesEditText.setText(notes);
            }
         /* List<Trigger> triggers = record.getTriggers();
          if(triggers.size() > 0){
            triggersAdapter.setTriggers(triggers);
            triggersAdapter.notifyDataSetChanged();
          }*/
        }else{
          initCreate();
        }
  }
  
  
  
public void saveRecord(View view) {

           record.setIntensity(intensitySeekBar.getProgress());
           record.setStart(startCal);
           record.setEnd(endCal);
           record.setNotes(notesEditText.getText().toString());
           if (record.getId() > -1)
               db.updateRecord(record);
           else
               db.addRecord(record);
           startActivity(new Intent(this, ViewRecordsActivity.class));

  }
  
  private void setupSeekBar(){
    
        intensitySeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
        {

            @Override
            public void onProgressChanged(SeekBar seekbar, int progress,
                    boolean fromUser) {
                // TODO Auto-generated method stub
              String level = "";
                switch(progress){
                case 0:
                  level = "No Pain";
                  break;
                case 1:
                case 2:
                case 3:
                  level = "Mild";
                  break;
                case 4:
                case 5:
                case 6:
                  level = "Moderate";
                  break;
                case 7:
                case 8:
                case 9:
                case 10:
                  level = "Severe";
                  break;
              default:
                level = "";
                }
                intensityInfo.setText(String.valueOf(progress) + ": " + level);
            }

            @Override
            public void onStartTrackingTouch(SeekBar arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onStopTrackingTouch(SeekBar arg0) {
                // TODO Auto-generated method stub

            }

        });
  }

  public void editStartDateTime(View view) {
    this.activeDateTimeField = ActiveDateTimeField.START;
    DialogFragment newFragment = new DateTimeDialogFragment();
    
      newFragment.setArguments(CalendarUtil.bundleCalendar(this.startCal));
      newFragment.show(getSupportFragmentManager(), "datetime");
  }
  
  public void editEndDateTime(View view) {
    this.activeDateTimeField = ActiveDateTimeField.END;
    DialogFragment newFragment = new DateTimeDialogFragment();
    newFragment.setArguments(CalendarUtil.bundleCalendar(this.endCal, this.startCal.getTimeInMillis()));
      newFragment.show(getSupportFragmentManager(), "datetime");
  }
  
  public void editTriggers(View view) {
    System.out.println("edit triggers clicked");
    AddTriggersDialogFragment newFragment = new AddTriggersDialogFragment();
    newFragment.show(getSupportFragmentManager(), "triggers");
  }

  @Override
  public void onReturnVal(DatePicker date, TimePicker time) {
    // TODO Auto-generated method stub
    Calendar cal = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
    int hour = time.getCurrentHour();
    cal.set(date.getYear(), date.getMonth(), date.getDayOfMonth(), hour, time.getCurrentMinute(), 0);
    
    switch(activeDateTimeField){
      case START:
        updateStartDateTimeFields(cal);
        break;
      case END:
        updateEndDateTimeFields(cal);
        break;
      default:
        break;
    }
  }
  
  //@Override
  /*public void onReturnVal(List<Trigger> addTriggers, List<Trigger> removeTriggers) {
    // TODO Auto-generated method stub
    if(removeTriggers != null){
    for(Trigger remove : removeTriggers){
      triggersAdapter.remove(remove);
    }
    }
    if(addTriggers != null){
    for(Trigger add : addTriggers){
      triggersAdapter.add(add);
    }
    }
    triggersAdapter.notifyDataSetChanged();
  }*/
  
  private void updateStartDateTimeFields(Calendar cal){
    this.startCal = cal;
    this.startDateText.setText(CalendarUtil.getDateDisplay(cal));
    this.startTimeText.setText(CalendarUtil.getTimeDisplay(cal));
  }
  
  private void updateEndDateTimeFields(Calendar cal){
    this.endCal = cal;
    this.endDateText.setText(CalendarUtil.getDateDisplay(cal));
    this.endTimeText.setText(CalendarUtil.getTimeDisplay(cal));
  }
  
  
  
  @Override
    public boolean onOptionsItemSelected(MenuItem item) 
    {
        switch (item.getItemId()) 
        {
        case android.R.id.home: 
            onBackPressed();
            break;

        default:
            return super.onOptionsItemSelected(item);
        }
        return true;
    }
}




Java Source Code List

com.logmypain.main.MainActivity.java
com.logmypain.main.record.HeadacheRecordFormActivity.java
com.logmypain.main.record.dialogs.AddTriggersDialogFragment.java
com.logmypain.main.record.dialogs.DateTimeDialogFragment.java
com.logmypain.main.record.toasties.RecordNowToastie.java
com.logmypain.tasks.ViewRecordsActivity.java
com.logmypain.tasks.adapters.CalendarGridViewAdapter.java
com.logmypain.tasks.adapters.TriggersAdapter.java
com.logmypain.tasks.adapters.ViewRecordsAdapter.java
com.logmypain.tasks.framents.ViewCalendarFragment.java
com.logmypain.tasks.framents.ViewListFragment.java
com.logmypain.tasks.listeners.MonthSelectedListener.java
com.logmypain.tasks.listeners.ViewRecordsTabListener.java
com.logmypain.tasks.listeners.YearSelectedListener.java
com.logmypain.utils.CalendarUtil.java
com.logmypain.utils.CalendarViewDay.java
com.logmypain.utils.DatabaseHelper.java
com.logmypain.utils.SquareLayout.java
com.logmypain.utils.Models.HeadacheRecord.java
com.logmypain.utils.Models.Headache.java
com.logmypain.utils.Models.Trigger.java