package com.integreight.onesheeld.shields.fragments;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import com.integreight.onesheeld.R;
import com.integreight.onesheeld.enums.ArduinoPin;
import com.integreight.onesheeld.model.ArduinoConnectedPin;
import com.integreight.onesheeld.sdk.OneSheeldDevice;
import com.integreight.onesheeld.shields.ShieldFragmentParent;
import com.integreight.onesheeld.shields.controller.SpeakerShield;
import com.integreight.onesheeld.shields.controller.SpeakerShield.SpeakerEventHandler;
import com.integreight.onesheeld.utils.ConnectingPinsView;
import com.integreight.onesheeld.utils.ConnectingPinsView.OnPinSelectionListener;
public class BuzzerFragment extends ShieldFragmentParent<BuzzerFragment> {
private final int[] levelsResources = new int[]{
R.drawable.buzzer_shield_0_volume,
R.drawable.buzzer_shield_25_volume,
R.drawable.buzzer_shield_50_volume,
R.drawable.buzzer_shield_75_volume,
R.drawable.buzzer_shield_100_volume};
private ImageView buzzerSpeaker;
private Button increaseBtn, decreaseBtn;
private int currLevel = 0;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.buzzer_shield_fragment_layout, container,
false);
}
@Override
public void doOnStart() {
ConnectingPinsView.getInstance().reset(
getApplication().getRunningShields().get(getControllerTag()),
new OnPinSelectionListener() {
@Override
public void onSelect(ArduinoPin pin) {
if (pin != null) {
(getApplication()
.getRunningShields()
.get(getControllerTag()))
.setConnected(new ArduinoConnectedPin(
pin.microHardwarePin,
OneSheeldDevice.INPUT));
} else {
((SpeakerShield) getApplication()
.getRunningShields()
.get(getControllerTag())).connectedPin = -1;
// toggleLed(false);
}
}
@Override
public void onUnSelect(ArduinoPin pin) {
((SpeakerShield) getApplication().getRunningShields()
.get(getControllerTag())).stopBuzzer();
}
});
((SpeakerShield) getApplication().getRunningShields().get(
getControllerTag()))
.setSpeakerEventHandler(speakerEventHandler);
}
@Override
public void doOnViewCreated(View v, @Nullable Bundle savedInstanceState) {
buzzerSpeaker = (ImageView) v
.findViewById(R.id.speaker_shield_imageview);
buzzerSpeaker
.setBackgroundResource(getBuzzerVolumeResource(((SpeakerShield) getApplication()
.getRunningShields().get(getControllerTag()))
.getBuzzerVolume()));
increaseBtn = (Button) v.findViewById(R.id.increaseBtn);
decreaseBtn = (Button) v.findViewById(R.id.decreaseBtn);
increaseBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int buzVol = ((SpeakerShield) getApplication()
.getRunningShields().get(getControllerTag()))
.getBuzzerVolume();
if (buzVol < 100) {
buzVol = buzVol + 25;
((SpeakerShield) getApplication().getRunningShields().get(
getControllerTag())).setBuzzerVolume(buzVol);
buzzerSpeaker
.setBackgroundResource(getBuzzerVolumeResource(((SpeakerShield) getApplication()
.getRunningShields()
.get(getControllerTag())).getBuzzerVolume()));
}
}
});
decreaseBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int buzVol = ((SpeakerShield) getApplication()
.getRunningShields().get(getControllerTag()))
.getBuzzerVolume();
if (buzVol > 0) {
buzVol = buzVol - 25;
((SpeakerShield) getApplication().getRunningShields().get(
getControllerTag())).setBuzzerVolume(buzVol);
buzzerSpeaker
.setBackgroundResource(getBuzzerVolumeResource(((SpeakerShield) getApplication()
.getRunningShields()
.get(getControllerTag())).getBuzzerVolume()));
}
}
});
}
private int getBuzzerVolumeResource(float volume) {
currLevel = volume == 0 ? 0 : volume == 25 ? 1 : volume == 50 ? 2
: volume == 75 ? 3 : volume == 100 ? 4 : currLevel;
return levelsResources[currLevel];
}
private SpeakerEventHandler speakerEventHandler = new SpeakerEventHandler() {
@Override
public void onSpeakerChange(boolean isOn) {
if (canChangeUI()) {
}
}
};
private void initializeFirmata() {
if (getApplication().getRunningShields().get(getControllerTag()) == null) {
getApplication().getRunningShields().put(getControllerTag(),
new SpeakerShield(activity, getControllerTag()));
}
}
@Override
public void doOnServiceConnected() {
initializeFirmata();
}
@Override
public void doOnResume() {
((SpeakerShield) getApplication().getRunningShields().get(
getControllerTag())).doOnResume();
}
}