Imported Alarm countdown text

This commit is contained in:
Phillip Hsu
2016-06-07 13:16:53 -07:00
parent dca0a258f8
commit 9f151fa9cc
6 changed files with 171 additions and 7 deletions
@@ -0,0 +1,53 @@
package com.philliphsu.clock2.alarms;
import android.content.Context;
import android.support.annotation.NonNull;
import android.util.AttributeSet;
import android.widget.TextView;
import com.philliphsu.clock2.DurationDisplayer;
import com.philliphsu.clock2.TickHandler;
import com.philliphsu.clock2.util.DurationUtils;
/**
* Created by Phillip Hsu on 4/30/2016.
*/
public class AlarmCountdown extends TextView implements DurationDisplayer {
private static final String TAG = "NextAlarmText";
private static final int TICK_INTERVAL = 60000; // per minute
private TickHandler mHandler;
public AlarmCountdown(Context context) {
super(context);
}
public AlarmCountdown(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setOnTickListener(@NonNull OnTickListener listener) {
mHandler = new TickHandler(listener, TICK_INTERVAL);
}
@Override
public void showAsText(long duration) {
setText(DurationUtils.toString(getContext(), duration, true));
}
@Override
public void startTicking(boolean resume) {
mHandler.startTicking(resume);
}
@Override
public void stopTicking() {
mHandler.stopTicking();
}
@Override
public void forceTick() {
mHandler.forceTick();
}
}
@@ -31,18 +31,19 @@ import static com.philliphsu.clock2.util.DateFormatUtils.formatTime;
/**
* Created by Phillip Hsu on 5/31/2016.
*/
public class AlarmViewHolder extends BaseViewHolder<Alarm> {
public class AlarmViewHolder extends BaseViewHolder<Alarm> implements AlarmCountdown.OnTickListener {
private static final RelativeSizeSpan AMPM_SIZE_SPAN = new RelativeSizeSpan(0.5f);
@Bind(R.id.time) TextView mTime;
@Bind(R.id.on_off_switch) SwitchCompat mSwitch;
@Bind(R.id.label) TextView mLabel;
@Bind(R.id.countdown) TextView mCountdown; // TODO: Change type to NextAlarmText, once you move that class to this project
@Bind(R.id.countdown) AlarmCountdown mCountdown;
@Bind(R.id.recurring_days) TextView mDays;
@Bind(R.id.dismiss) Button mDismissButton;
public AlarmViewHolder(ViewGroup parent, OnListItemInteractionListener<Alarm> listener) {
super(parent, R.layout.item_alarm, listener);
mCountdown.setOnTickListener(this);
}
@Override
@@ -88,9 +89,14 @@ public class AlarmViewHolder extends BaseViewHolder<Alarm> {
bindDays(num > 0, text);
}
@Override
public void onTick() {
mCountdown.showAsText(getAlarm().ringsIn());
}
@OnClick(R.id.dismiss)
void onClick() {
AlarmUtils.cancelAlarm(getContext(), getItem());
AlarmUtils.cancelAlarm(getContext(), getAlarm());
bindDismissButton(false, ""); // Will be set to correct text the next time we bind.
// TODO: Check if alarm has no recurrence, then turn it off.
}
@@ -113,11 +119,11 @@ public class AlarmViewHolder extends BaseViewHolder<Alarm> {
private void bindCountdown(boolean enabled, long remainingTime) {
if (enabled) {
//TODO:mCountdown.showAsText(remainingTime);
//TODO:mCountdown.getTickHandler().startTicking(true)
mCountdown.showAsText(remainingTime);
mCountdown.startTicking(true);
mCountdown.setVisibility(VISIBLE);
} else {
//TODO:mCountdown.getTickHandler().stopTicking();
mCountdown.stopTicking();
mCountdown.setVisibility(GONE);
}
}
@@ -140,4 +146,8 @@ public class AlarmViewHolder extends BaseViewHolder<Alarm> {
private void setVisibility(@NonNull View view, boolean visible) {
view.setVisibility(visible ? VISIBLE : GONE);
}
private Alarm getAlarm() {
return getItem();
}
}