From 4e1b06ebcf08dd57240a56bac6f923b2e72ea793 Mon Sep 17 00:00:00 2001 From: Patrick Scott Date: Mon, 16 Nov 2009 07:50:20 -0500 Subject: [PATCH] New UI for the list of alarms. Still need to put the "Add alarm" item at the top and the clock at the bottom. --- res/drawable-hdpi/ic_clock_alarm_off.png | Bin 0 -> 1663 bytes res/drawable-hdpi/ic_clock_alarm_on.png | Bin 0 -> 1633 bytes res/drawable-hdpi/ic_clock_alarm_selected.png | Bin 0 -> 695 bytes res/drawable-hdpi/ic_indicator_off.png | Bin 0 -> 458 bytes res/drawable-hdpi/ic_indicator_on.png | Bin 0 -> 613 bytes res/drawable-mdpi/ic_clock_alarm_off.png | Bin 0 -> 1013 bytes res/drawable-mdpi/ic_clock_alarm_on.png | Bin 0 -> 1018 bytes res/drawable-mdpi/ic_clock_alarm_selected.png | Bin 0 -> 511 bytes res/drawable-mdpi/ic_indicator_off.png | Bin 0 -> 307 bytes res/drawable-mdpi/ic_indicator_on.png | Bin 0 -> 380 bytes res/drawable/indicator_clock_onoff.xml | 24 ++++++++ res/layout/alarm_time.xml | 80 ++++++++++++++++++-------- res/values/colors.xml | 2 +- src/com/android/deskclock/AlarmClock.java | 50 ++++++++++++---- src/com/android/deskclock/DigitalClock.java | 11 ++-- 15 files changed, 127 insertions(+), 40 deletions(-) create mode 100644 res/drawable-hdpi/ic_clock_alarm_off.png create mode 100644 res/drawable-hdpi/ic_clock_alarm_on.png create mode 100644 res/drawable-hdpi/ic_clock_alarm_selected.png create mode 100644 res/drawable-hdpi/ic_indicator_off.png create mode 100644 res/drawable-hdpi/ic_indicator_on.png create mode 100644 res/drawable-mdpi/ic_clock_alarm_off.png create mode 100644 res/drawable-mdpi/ic_clock_alarm_on.png create mode 100644 res/drawable-mdpi/ic_clock_alarm_selected.png create mode 100644 res/drawable-mdpi/ic_indicator_off.png create mode 100755 res/drawable-mdpi/ic_indicator_on.png create mode 100644 res/drawable/indicator_clock_onoff.xml diff --git a/res/drawable-hdpi/ic_clock_alarm_off.png b/res/drawable-hdpi/ic_clock_alarm_off.png new file mode 100644 index 0000000000000000000000000000000000000000..76c19e59789f3b36c01f415876e9b65952eea81e GIT binary patch literal 1663 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 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_clock_alarm_selected.png b/res/drawable-hdpi/ic_clock_alarm_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..ddcaea16a3d79415934d7d6f020a8bd93945d3bf GIT binary patch literal 695 zcmV;o0!aOdP)jpPMdK2U}NH(CI;JU#zRE`uO1I9r55J>)k0=7S6W9(G7+wJZzkE#GD z015yefU2sR&2(PqGmwQ?s9q!FXmaeEV9oaSS!KD5B{%>Yi=WrXI*LzYyc#6lFkTG@ zfHZuuL)IJ_ikoyq_;yBoNNx=DKmu{EiEyosK)!2pvdH+BADssRl-E{!vE%~@-xL)@ zvP5P87%bKf&BWNL3|Rqy1u@InGVlas%gESCzGMLau5-l_jq9nk-Xe~ytdP?bIRNyC zwQAp6(F0(;I!(TP4gdUb9Cg zI;a31jrlo4b$Is3M8^Y>xf!f;pmNWMMPH3FboR)M0$`5N`WH)b7a%UrC;)=E&Q_?; zh{Z)t0JGr&`gq?6`IMg5@uo*@>63=$ zP1A_BZLh4gchI#E!i(@iYOUX)*VSrOGoiNIEx{Lu!{HI&MWEmePd;+4*XsonrtkX; zxUqE339NQ9nK)yNlTr?ED5cKU3@{B4-g^N~wcqa*3}6Q=H=E5DIL&R6BqGbQ4y#Sm z)J9R{PYpQha*yDsxZLe_8eOij*W@9hdwA9x(cth|Ri!L&cC4FhD?b&3X1U@XjR zHZy3C7SJ{{=wpzHA|H#3B0C)CgzzokJ==p5aa=`UgKs#$fR~T}ya#-1FyKDX5(NzC zM+f|PR)T?-|HF%032@H34_-z>% literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_indicator_on.png b/res/drawable-hdpi/ic_indicator_on.png new file mode 100644 index 0000000000000000000000000000000000000000..5a99970bd3b69a1a4becf5237f94129b30fa379f GIT binary patch literal 613 zcmV-r0-F7aP)FrI{E#dU`E=i21!& z;I8Qw;Gbhb$%;k3SUV2S>jKD;0CP6F^W>x%&wDTFJ5DCf3g}`&goSVgNsY5Fvn9y!XgIV$odO?d@Jj zsgMB;Z36f)X}}ZJ>E927%QFD)uD%nM$3uD^4f4yo>%0U*3HY9FqaOmkfb00A#cNI} z(SvuRKY~1%G2+iOC?>H`urS|1mJwQwQx=yuyORY-T8<#jacrIEaJ~vd3+aQ#e0IKj z_C@8pJzY7qbNlPz$EhfbnNrWTsL~VhehB^){RV9c+MYv@T=_>f(;Pg}qH(hZ`Xc%e zC4}H$Fc>LOTA!@W-3@J8)!u)5cH_&>w~y!P*F^_+l?snOl#1OE0yuEnuM4obmKx_B zG-@e89`k1l!yv#w$Dhs&FF!oLb$#a7{uf{X$RBj&TmndK00000NkvXXu0mjf*j5y1 literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/ic_clock_alarm_off.png b/res/drawable-mdpi/ic_clock_alarm_off.png new file mode 100644 index 0000000000000000000000000000000000000000..742c074053a6a0b5c6f76db5e08fc829d88bb46c GIT binary patch literal 1013 zcmVL-C|2>8Bl;*nKV)yrnHUfkS%zi$B3;853f_d^8W zxb*z|T*T0TbA>&fPM>5lncwft9}b5HPft%}VhUU@l}c4X#EJ5eiikq*cDp|TRua)j z=L!J7M1tWP=Ws3?ZHYlFVosd_8X$6$Kme89!*6F{VWAqA($Q#C1ST_QpeyY30eg3O zdHMT90$^Hve0;2kh!hc#gL!`z7Z?3br(9y0Wt34h91q<9!lA1_Ban znx@&%&{zQ48%C;XgrYvjE3UbBcXww2xP;%9)I%uMbYkIo&~CRIAnoLGIR~1k!f6@b zc1eQR6ElDmT6mP{80l{C9YBi!s7M_MExab6Fj{tzayy^TSEDee-iEDKs|e5v9nQ_o zu~XSpbq$&Eh59M50!Wk|9v%$zfDnk=Y$H*SmRvU2$B}D5)**o9wQKfdbg5sojE6>C~@ls--(r&0EA~sMN@E5 z1Sq(OR->)h8Ic*#qCUv2#lE__>c4BOX`HutdwY8%wk~SKZcxNz^w^H}_V#w{VWds5mb!FKP~H!DI`ZAw*;%;qDRN8ln-H%)2|t#=_4Tz0 zphJ#v8&Z~*mV7u02+1-nx2zBwMeFx^Jsqc_f)nwu*=(L~ZEblo5ddHTXTFYg44mV3 z`xU9*WV(503=`m;kIRB@HyHmSQM}hdjJIlMCIX1M0RUf+IbL61=eQxd5>v#ELHe7p jYkdAS`y>$8{t7SvS59n&NM;Bs00000NkvXXu0mjfF4)b= literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/ic_clock_alarm_on.png b/res/drawable-mdpi/ic_clock_alarm_on.png new file mode 100644 index 0000000000000000000000000000000000000000..f81d9f670d7f9517e3a70c7c210c26cd241151f9 GIT binary patch literal 1018 zcmVJU0k{HrD}X7pP!6rajGQUq=a1hzr>px_R1yphta|mjsw*UY z@44rG`gRjpEEd{#j;Qv{8>C{i2Ym}iZb*M{>ARCcoMF=nS*=*Lt8a>zGxfYE^ zwT+DpJ{$3Pyu8er*Vosp`Fvi2u7;!+S+RI8$c@nsL`NIhamWl08=L>-?46{QmMKhrZ0i_ z0?--_Zf2$gtgda!%o)-bulm(`N zeH}S8)jHBr;uGO+cxtEyk1N;_;vIyK5Q)}Woe;*WC`b`*JUdcRSIvecn2 zG1h9u2)zLS=1y$EWHM>`HL>@Dvec0zi^K{|0E)--Ko*p>Oon-;%u-+@5LLWwIYjNtj?k-i1#VBXo-Q6|S7Db_&C`yMqDAG4AITQi4 zuT?wsX}vZ{c$%0X;fbQ=?S!ES5RA+jVtA-$v)K<(K-)d@)29w~#fc{yR;U_)XEwbj z2wHF{>_vk*)RkM<4ov_Jvec37+gkf9;JCTDso)MkkJJ(DAgmUuy-_F>L}7M1 z9p0cyXgF2g2Z>4Vu^r9B!^8TQE~UI&DB}dh$nkW4RzPmUHf8_IdXRQbTpoBADM;?W7 zT(k2CJzMlo-t)W!K#Uj9-&o`Jy(Lk6*FmfTk@K|(;11XVz=ro2W{2200=q9XnHLg((MCT`vzeGKnA3;Un78p_3#cf3PN7XGUx+#dJ6!qh$(G| z@5s@TAe3>W(}->H766X6z$LPhqF%G9)<9xQCgRniXhVCSu9<{$Ckzhadxs==gV1p$ z0LGYe_I(WSIfyX}09E@>+7*Cf=sqKBA{VNoMe z^vWBNr4<{Tm$l-13?s`akk#B!l!M`%*QJ+IEX0{bG#l;#Qobq4K*yrMKJY}Ko&)U_ zkJ<-4C(>KD#^+|hQ518km~!>1|Nn-69>A9X0|4=IM(l4!%kcmJ002ovPDHLkV1gm_ B;w1n8 literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/ic_indicator_off.png b/res/drawable-mdpi/ic_indicator_off.png new file mode 100644 index 0000000000000000000000000000000000000000..c1aa867778c1bb9e2962e51d300f3c8f100ade49 GIT binary patch literal 307 zcmV-30nGl1P)(HfB!9VG*>RzzBqgYB1Db}j#n_tnqaD?0~56>MnO>-QE;p#Zf86_OM(xdK0QQSCk z$+E2WeSb@mg3C-M0ZJ>lSBkYOifw%n$FaVS6P!3v=FP;DZ002ovPDHLk FV1oF)fqno0 literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/ic_indicator_on.png b/res/drawable-mdpi/ic_indicator_on.png new file mode 100755 index 0000000000000000000000000000000000000000..361364bc2edb0cfaf1a5175313d8b078e4ccf626 GIT binary patch literal 380 zcmV-?0fYXDP)5jLXl=Tua$yFhxH* zSK7;KE8B`oIL#d#p2*if2&;*w}#UnRULs*7t>FB a5?}xeq-BiFud^ip0000 + + + + + + + diff --git a/res/layout/alarm_time.xml b/res/layout/alarm_time.xml index 6db55d0..24a485b 100644 --- a/res/layout/alarm_time.xml +++ b/res/layout/alarm_time.xml @@ -16,61 +16,93 @@ + android:layout_height="wrap_content" + android:orientation="horizontal"> + + + + + + + - + android:layout_height="wrap_content" + android:baselineAligned="true"> + + - - + android:textColor="@color/grey"/> - - diff --git a/res/values/colors.xml b/res/values/colors.xml index e61b6c3..df2c9cf 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -20,5 +20,5 @@ #ffffffff #ffee0000 - #ffe0e0e0 + #ffaaaaaa diff --git a/src/com/android/deskclock/AlarmClock.java b/src/com/android/deskclock/AlarmClock.java index e9d5e78..f2533c3 100644 --- a/src/com/android/deskclock/AlarmClock.java +++ b/src/com/android/deskclock/AlarmClock.java @@ -25,6 +25,7 @@ import android.content.SharedPreferences; import android.content.res.Configuration; import android.database.Cursor; import android.database.DataSetObserver; +import android.graphics.Typeface; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -44,6 +45,7 @@ import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.CursorAdapter; +import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; @@ -68,6 +70,17 @@ public class AlarmClock extends Activity implements OnItemClickListener { private ListView mAlarmsList; private Cursor mCursor; + private void updateIndicatorAndAlarm(boolean enabled, ImageView bar, + Alarm alarm) { + bar.setImageResource(enabled ? R.drawable.ic_indicator_on + : R.drawable.ic_indicator_off); + Alarms.enableAlarm(this, alarm.id, enabled); + if (enabled) { + SetAlarm.popAlarmSetToast(this, alarm.hour, alarm.minutes, + alarm.daysOfWeek); + } + } + private class AlarmTimeAdapter extends CursorAdapter { public AlarmTimeAdapter(Context context, Cursor cursor) { super(context, cursor); @@ -85,17 +98,33 @@ public class AlarmClock extends Activity implements OnItemClickListener { public void bindView(View view, Context context, Cursor cursor) { final Alarm alarm = new Alarm(cursor); - CheckBox onButton = (CheckBox)view.findViewById(R.id.alarmButton); - onButton.setChecked(alarm.enabled); - onButton.setOnClickListener(new OnClickListener() { + View indicator = view.findViewById(R.id.indicator); + + // Set the initial resource for the bar image. + final ImageView barOnOff = + (ImageView) indicator.findViewById(R.id.bar_onoff); + barOnOff.setImageResource(alarm.enabled ? + R.drawable.ic_indicator_on : R.drawable.ic_indicator_off); + + // Set the initial state of the clock "checkbox" + final CheckBox clockOnOff = + (CheckBox) indicator.findViewById(R.id.clock_onoff); + clockOnOff.setChecked(alarm.enabled); + + // Handle the "checkbox" click and toggle the alarm. + clockOnOff.setOnClickListener(new OnClickListener() { public void onClick(View v) { boolean isChecked = ((CheckBox) v).isChecked(); - Alarms.enableAlarm(AlarmClock.this, alarm.id, - isChecked); - if (isChecked) { - SetAlarm.popAlarmSetToast(AlarmClock.this, - alarm.hour, alarm.minutes, alarm.daysOfWeek); - } + updateIndicatorAndAlarm(isChecked, barOnOff, alarm); + } + }); + + // Clicking outside the "checkbox" should also change the state. + indicator.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + clockOnOff.toggle(); + updateIndicatorAndAlarm(clockOnOff.isChecked(), + barOnOff, alarm); } }); @@ -107,6 +136,7 @@ public class AlarmClock extends Activity implements OnItemClickListener { c.set(Calendar.HOUR_OF_DAY, alarm.hour); c.set(Calendar.MINUTE, alarm.minutes); digitalClock.updateTime(c); + digitalClock.setTypeface(Typeface.DEFAULT); // Set the repeat text or leave it blank if it does not repeat. TextView daysOfWeekView = @@ -122,7 +152,7 @@ public class AlarmClock extends Activity implements OnItemClickListener { // Display the label TextView labelView = - (TextView) digitalClock.findViewById(R.id.label); + (TextView) view.findViewById(R.id.label); if (alarm.label != null && alarm.label.length() != 0) { labelView.setText(alarm.label); labelView.setVisibility(View.VISIBLE); diff --git a/src/com/android/deskclock/DigitalClock.java b/src/com/android/deskclock/DigitalClock.java index 383ca7b..38ed91b 100644 --- a/src/com/android/deskclock/DigitalClock.java +++ b/src/com/android/deskclock/DigitalClock.java @@ -66,11 +66,8 @@ public class DigitalClock extends LinearLayout { private TextView mAmPm; private String mAmString, mPmString; - AmPm(View parent, Typeface tf) { + AmPm(View parent) { mAmPm = (TextView) parent.findViewById(R.id.am_pm); - if (tf != null) { - mAmPm.setTypeface(tf); - } String[] ampm = new DateFormatSymbols().getAmPmStrings(); mAmString = ampm[0]; @@ -113,7 +110,7 @@ public class DigitalClock extends LinearLayout { "fonts/Clockopia.ttf"); mTimeDisplay = (TextView) findViewById(R.id.timeDisplay); mTimeDisplay.setTypeface(tf); - mAmPm = new AmPm(this, null); + mAmPm = new AmPm(this); mCalendar = Calendar.getInstance(); setDateFormat(); @@ -183,4 +180,8 @@ public class DigitalClock extends LinearLayout { void setLive(boolean live) { mLive = live; } + + void setTypeface(Typeface tf) { + mTimeDisplay.setTypeface(tf); + } } -- 2.11.0