package com.geek_alarm.android.activities; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.Window; import android.widget.CheckBox; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; import com.geek_alarm.android.ActivityUtils; import com.geek_alarm.android.R; import com.geek_alarm.android.Utils; /** * Activity for setting up alarm: set time and days. */ public class SetUpAlarmActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.set_up_alarm); findViewById(R.id.ok).setOnClickListener(new OkListener()); findViewById(R.id.cancel).setOnClickListener(new CancelListener()); initWheelTimePicker(); initDays(); } private void initWheelTimePicker() { Intent intent = getIntent(); int hour = intent.getIntExtra("hour", 0); int minute = intent.getIntExtra("minute", 0); ActivityUtils.initWheelTimePicker(this, hour, minute, R.layout.wheel_text_item_small); } private void initDays() { Intent intent = getIntent(); int daysCode = intent.getIntExtra("days", 0); TableLayout days = (TableLayout)findViewById(R.id.days); for (int i = 0; i < 7; i++) { TableRow nameRow = (TableRow)days.getChildAt(0); TextView dayName = new TextView(this); dayName.setText(Utils.DAYS_OF_WEEK_NAMES[i]); if (i > 4) { dayName.setTextAppearance(this, R.style.Red); } dayName.setGravity(Gravity.CENTER_HORIZONTAL); nameRow.addView(dayName); TableRow checkboxRow = (TableRow)days.getChildAt(1); CheckBox box = new CheckBox(this); box.setChecked(((1 << i) & daysCode) != 0); checkboxRow.addView(box); } } private class OkListener implements View.OnClickListener { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("hour", ActivityUtils.getHour(SetUpAlarmActivity.this)); intent.putExtra("minute", ActivityUtils.getMinute(SetUpAlarmActivity.this)); intent.putExtra("days", getDays()); setResult(RESULT_OK, intent); finish(); } } @Override public void onBackPressed() { setResult(RESULT_CANCELED); super.onBackPressed(); } private class CancelListener implements View.OnClickListener { @Override public void onClick(View v) { setResult(RESULT_CANCELED); finish(); } } private int getDays() { int daysCode = 0; TableRow days = (TableRow)((TableLayout)findViewById(R.id.days)).getChildAt(1); for (int i = 0; i < days.getChildCount(); i++) { daysCode |= ((CheckBox)days.getChildAt(i)).isChecked() ? (1 << i) : 0; } return daysCode; } }