package es.malvarez.mywatchfaces.widget; import android.app.Service; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.text.TextPaint; import com.ingenic.iwds.slpt.view.core.SlptLinearLayout; import com.ingenic.iwds.slpt.view.core.SlptViewComponent; import com.ingenic.iwds.slpt.view.sport.SlptLastHeartRateView; import java.util.Collections; import java.util.List; import es.malvarez.mywatchfaces.R; import es.malvarez.mywatchfaces.data.DataType; import es.malvarez.mywatchfaces.data.HeartRate; import es.malvarez.mywatchfaces.resource.ResourceManager; /** * Heart rate widget */ public class HeartRateWidget extends AbstractWidget { private TextPaint textPaint; private HeartRate heartRate; private float textTop; private float textLeft; private Drawable heartIcon; @Override public void init(Service service) { this.textLeft = service.getResources().getDimension(R.dimen.malvarez_heart_rate_text_left); this.textTop = service.getResources().getDimension(R.dimen.malvarez_heart_rate_text_top); this.textPaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG); this.textPaint.setColor(service.getResources().getColor(R.color.malvarez_time_colour)); this.textPaint.setTypeface(ResourceManager.getTypeFace(service.getResources(), ResourceManager.Font.BEBAS_NEUE)); this.textPaint.setTextSize(service.getResources().getDimension(R.dimen.malvarez_circles_font_size)); this.textPaint.setTextAlign(Paint.Align.CENTER); this.heartIcon = service.getResources().getDrawable(R.drawable.heart, null); this.setDrawableBounds(this.heartIcon, service.getResources().getDimension(R.dimen.malvarez_heart_rate_icon_left), service.getResources().getDimension(R.dimen.malvarez_heart_rate_icon_top)); } @Override public List<DataType> getDataTypes() { return Collections.singletonList(DataType.HEART_RATE); } @Override public void onDataUpdate(DataType type, Object value) { this.heartRate = (HeartRate) value; } @Override public void draw(Canvas canvas, float width, float height, float centerX, float centerY) { String text = heartRate == null || heartRate.getHeartRate() < 25 ? "--" : String.format("%d", heartRate.getHeartRate()); canvas.drawText(text, textLeft, textTop, textPaint); this.heartIcon.draw(canvas); } @Override public List<SlptViewComponent> buildSlptViewComponent(Service service) { SlptLinearLayout heart = new SlptLinearLayout(); heart.add(new SlptLastHeartRateView()); heart.setTextAttrForAll( service.getResources().getDimension(R.dimen.malvarez_circles_font_size_slpt), -1, ResourceManager.getTypeFace(service.getResources(), ResourceManager.Font.BEBAS_NEUE) ); heart.setStart( (int) service.getResources().getDimension(R.dimen.malvarez_heart_rate_text_left_slpt), (int) service.getResources().getDimension(R.dimen.malvarez_heart_rate_text_top_slpt)); return Collections.<SlptViewComponent>singletonList(heart); } }