blob: b23eebbf3d28344c004e1ee312705235443a3dfb [file] [log] [blame]
/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.deskclock.alarms.dataadapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SwitchCompat;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.TextView;
import com.android.deskclock.AlarmUtils;
import com.android.deskclock.R;
import com.android.deskclock.alarms.AlarmTimeClickHandler;
import com.android.deskclock.provider.Alarm;
import com.android.deskclock.provider.AlarmInstance;
import com.android.deskclock.widget.TextTime;
/**
* Abstract ViewHolder for alarm time items.
*/
public abstract class AlarmTimeViewHolder extends RecyclerView.ViewHolder {
private static final float CLOCK_ENABLED_ALPHA = 1f;
private static final float CLOCK_DISABLED_ALPHA = 0.69f;
public final TextTime clock;
public final CompoundButton onoff;
public final View arrow;
public final View preemptiveDismissContainer;
public final TextView preemptiveDismissButton;
protected Alarm mAlarm;
protected AlarmInstance mAlarmInstance;
private final AlarmTimeClickHandler mAlarmTimeClickHandler;
public AlarmTimeViewHolder(View itemView, AlarmTimeClickHandler alarmTimeClickHandler) {
super(itemView);
mAlarmTimeClickHandler = alarmTimeClickHandler;
clock = (TextTime) itemView.findViewById(R.id.digital_clock);
onoff = (CompoundButton) itemView.findViewById(R.id.onoff);
arrow = itemView.findViewById(R.id.arrow);
preemptiveDismissContainer = itemView.findViewById(R.id.preemptive_dismiss_container);
preemptiveDismissButton =
(TextView) itemView.findViewById(R.id.preemptive_dismiss_button);
preemptiveDismissButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAlarmTimeClickHandler.dismissAlarmInstance(mAlarmInstance);
}
});
onoff.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
mAlarmTimeClickHandler.setAlarmEnabled(mAlarm, checked);
}
});
}
public void setData(Alarm alarm, AlarmInstance alarmInstance) {
mAlarmInstance = alarmInstance;
mAlarm = alarm;
}
public void clearData() {
mAlarmInstance = null;
mAlarm = null;
}
/**
* Binds the view with {@link Alarm} data.
*/
public abstract void bindAlarm(Context context, Alarm alarm, AlarmInstance alarmInstance);
protected void bindOnOffSwitch(Context context, Alarm alarm) {
onoff.setChecked(alarm.enabled);
((SwitchCompat) onoff).setTextOn(context.getString(R.string.on_switch));
((SwitchCompat) onoff).setTextOff(context.getString(R.string.off_switch));
}
protected void bindClock(Context context, Alarm alarm) {
clock.setAlpha(alarm.enabled ? CLOCK_ENABLED_ALPHA : CLOCK_DISABLED_ALPHA);
clock.setFormat(context);
clock.setTime(alarm.hour, alarm.minutes);
}
protected boolean bindPreemptiveDismissButton(Context context, Alarm alarm,
AlarmInstance alarmInstance) {
boolean canBind = alarm.canPreemptivelyDismiss() && alarmInstance != null;
if (canBind) {
preemptiveDismissContainer.setVisibility(View.VISIBLE);
final String dismissText = alarm.instanceState == AlarmInstance.SNOOZE_STATE
? context.getString(R.string.alarm_alert_snooze_until,
AlarmUtils.getAlarmText(context, alarmInstance, false))
: context.getString(R.string.alarm_alert_dismiss_now_text);
preemptiveDismissButton.setText(dismissText);
} else {
preemptiveDismissContainer.setVisibility(View.GONE);
}
return canBind;
}
}