package com.integreight.onesheeld.shields.controller.utils.glcd;
import com.integreight.onesheeld.shields.controller.GlcdShield;
import com.integreight.onesheeld.shields.controller.utils.GlcdView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Moustafa Nasr on 7/22/2015.
*/
public class CheckBox implements ButtonShape {
float btnX, btnY, btnSize, btnWidth, btnHeight;
int btnTouchId;
String btnText = "";
boolean isSelected = false, isPressed = false, visibility = true;
byte size;
public CheckBox(GlcdShield controller, float x, float y, byte size, int touchId, String text) {
this.btnX = x;
this.btnY = y;
this.btnText = text;
setSize(controller.getView(), size);
setBtnTouchId(controller, touchId);
isSelected = false;
isPressed = false;
}
@Override
public void applyTouch(GlcdShield controller) {
if (controller != null) {
List<Integer> params = new ArrayList<>();
params.add((int) (btnX));
params.add((int) (btnY));
params.add((int) (btnX + btnWidth));
params.add((int) (btnY + btnHeight));
params.add(btnTouchId);
controller.doOrder(GlcdShield.ORDER_APPLYTOUCH, params);
}
}
@Override
public void clearTouch(GlcdShield controller) {
if (controller != null) {
List<Integer> params = new ArrayList<>();
params.add((int) (btnX));
params.add((int) (btnY));
params.add((int) (btnX + btnWidth));
params.add((int) (btnY + btnHeight));
params.add(null);
controller.doOrder(GlcdShield.ORDER_APPLYTOUCH, params);
}
}
@Override
public void setBtnTouchId(GlcdShield controller, int btnTouchId) {
this.btnTouchId = btnTouchId;
applyTouch(controller);
}
@Override
public boolean setIsPressed(boolean isPressed) {
if (isPressed) {
setSelected(!isSelected);
}
if ((isPressed && isSelected) || (!isPressed && !isSelected)) {
return true;
}
return false;
}
@Override
public boolean setTouched(int touchX, int touchY) {
return true;
}
public void setSelected(Boolean selected) {
isSelected = selected;
}
public boolean getSelected() {
return isSelected;
}
public void setSize(GlcdView view, byte size) {
this.size = size;
switch (size) {
case 0:
btnSize = view.getCharHeight(GlcdShield.TEXT_SMALL, GlcdShield.FONT_ARIEL_REGULAR);
this.btnWidth = btnSize + view.getStringWidth(btnText, GlcdShield.TEXT_SMALL, GlcdShield.FONT_ARIEL_REGULAR);
break;
case 1:
btnSize = view.getCharHeight(GlcdShield.TEXT_MEDUIM, GlcdShield.FONT_ARIEL_REGULAR);
this.btnWidth = btnSize + view.getStringWidth(btnText, GlcdShield.TEXT_MEDUIM, GlcdShield.FONT_ARIEL_REGULAR);
break;
case 2:
btnSize = view.getCharHeight(GlcdShield.TEXT_LARGE, GlcdShield.FONT_ARIEL_REGULAR);
this.btnWidth = btnSize + view.getStringWidth(btnText, GlcdShield.TEXT_LARGE, GlcdShield.FONT_ARIEL_REGULAR);
break;
}
this.btnHeight = btnSize;
}
public void setText(GlcdView view, String text) {
this.btnText = text;
if (size == 0)
this.btnWidth = btnSize + view.getStringWidth(btnText, GlcdShield.TEXT_SMALL, GlcdShield.FONT_ARIEL_REGULAR);
else if (size == 1)
this.btnWidth = btnSize + view.getStringWidth(btnText, GlcdShield.TEXT_MEDUIM, GlcdShield.FONT_ARIEL_REGULAR);
else if (size == 2)
this.btnWidth = btnSize + view.getStringWidth(btnText, GlcdShield.TEXT_LARGE, GlcdShield.FONT_ARIEL_REGULAR);
this.btnHeight = btnSize;
}
@Override
public void setVisibility(boolean visibility) {
this.visibility = visibility;
}
@Override
public void setPosition(float x, float y) {
this.btnX = x;
this.btnY = y;
}
@Override
public void draw(GlcdView view) {
if (visibility) {
view.fillRectangle(btnX, btnY, btnSize - 1, btnSize, GlcdShield.WHITE);
view.drawRectangle(btnX, btnY, btnSize - 1, btnSize, GlcdShield.BLACK);
if (isSelected) view.fillRectangle(btnX, btnY, btnSize - 1, btnSize, GlcdShield.BLACK);
switch (size) {
case 0:
view.drawString(btnText, btnX + btnSize + 2, btnY + (btnSize / 2) - (view.getCharHeight(GlcdShield.TEXT_SMALL, GlcdShield.FONT_ARIEL_REGULAR) / 2) + 2, GlcdShield.TEXT_SMALL, GlcdShield.FONT_ARIEL_REGULAR, GlcdShield.BLACK);
break;
case 1:
view.drawString(btnText, btnX + btnSize + 2, btnY + (btnSize / 2) - (view.getCharHeight(GlcdShield.TEXT_MEDUIM, GlcdShield.FONT_ARIEL_REGULAR) / 2) + 2, GlcdShield.TEXT_MEDUIM, GlcdShield.FONT_ARIEL_REGULAR, GlcdShield.BLACK);
break;
case 2:
view.drawString(btnText, btnX + btnSize + 2, btnY + (btnSize / 2) - (view.getCharHeight(GlcdShield.TEXT_LARGE, GlcdShield.FONT_ARIEL_REGULAR) / 2) + 2, GlcdShield.TEXT_LARGE, GlcdShield.FONT_ARIEL_REGULAR, GlcdShield.BLACK);
break;
}
}
}
}