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.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.integreight.onesheeld.OneSheeldApplication;
import com.integreight.onesheeld.R;
import com.integreight.onesheeld.sdk.OneSheeldSdk;
import com.integreight.onesheeld.shields.ShieldFragmentParent;
import com.integreight.onesheeld.shields.controller.VibrationShield;
/**
* Author: Mostafa Mahmoud
* Email: mostafa_mahmoud@protonmail.com
* Created on: 11/22/15
*/
public class VibrationFragment extends ShieldFragmentParent<VibrationFragment>{
private Button vibrationStopButton;
Animation shake;
TextView vibrationTextTextView;
ImageView vibrationLogo;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){
return inflater.inflate(R.layout.vibration_shield_fragment_layout,container,false);
}
@Override
public void doOnViewCreated(View view, Bundle savedInstanceStat) {
vibrationStopButton = (Button) view.findViewById(R.id.vibration_stop_button);
vibrationTextTextView = (TextView) view.findViewById(R.id.vibration_shield_text_textview);
vibrationLogo = (ImageView) view.findViewById(R.id.vibration_shield_logo_imageview);
}
@Override
public void doOnActivityCreated(Bundle savedInstanceStat) {
shake = AnimationUtils.loadAnimation(activity, R.anim.shake);
}
@Override
public void doOnStart() {
VibrationShield.VibrationShieldListener vibrationShieldListener = new VibrationShield.VibrationShieldListener() {
@Override
public void onStart() {
if (canChangeUI()) {
uiHandler.post(new Runnable() {
@Override
public void run() {
vibrationLogo.startAnimation(shake);
vibrationTextTextView.setText("");
vibrationStopButton.setVisibility(View.VISIBLE);
}
});
}
}
@Override
public void onPause() {
if (canChangeUI()) {
uiHandler.post(new Runnable() {
@Override
public void run() {
vibrationLogo.clearAnimation();
vibrationTextTextView.setText(R.string.vibration_paused);
vibrationStopButton.setVisibility(View.VISIBLE);
}
});
}
}
@Override
public void onStop() {
if (canChangeUI()) {
uiHandler.post(new Runnable() {
@Override
public void run() {
vibrationLogo.clearAnimation();
vibrationTextTextView.setText("");
vibrationStopButton.setVisibility(View.INVISIBLE);
uiHandler.postDelayed(new Runnable() {
@Override
public void run() {
vibrationTextTextView.setText("");
}
},2000);
}
});
}
}
};
((VibrationShield)getApplication().getRunningShields().get(getControllerTag()))
.setVibrationShieldListener(vibrationShieldListener);
vibrationStopButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((VibrationShield) getApplication().getRunningShields().get(getControllerTag()))
.stop();
}
});
}
@Override
public void doOnResume() {
invalidateController();
if(canChangeUI()){
if(getApplication().getIsDemoMode()
&& !getApplication().isConnectedToBluetooth()){
vibrationLogo.startAnimation(shake);
vibrationTextTextView.setText(R.string.vibration_ready);
uiHandler.postDelayed(new Runnable() {
@Override
public void run() {
vibrationLogo.clearAnimation();
}
},1000);
}
else if(((VibrationShield) getApplication().getRunningShields().get(getControllerTag()))
.isPaused() || ((VibrationShield) getApplication().getRunningShields().get(getControllerTag()))
.isVibrating()){
vibrationStopButton.setVisibility(View.VISIBLE);
if(((VibrationShield) getApplication().getRunningShields().get(getControllerTag()))
.isVibrating()) {
vibrationLogo.startAnimation(shake);
vibrationTextTextView.setText("");
}
else if(((VibrationShield) getApplication().getRunningShields().get(getControllerTag()))
.isPaused()){
vibrationTextTextView.setText(R.string.vibration_paused);
}
}
}
}
@Override
public void doOnServiceConnected() {
invalidateController();
}
private void invalidateController() {
if (getApplication().getRunningShields().get(getControllerTag()) == null) {
getApplication().getRunningShields().put(getControllerTag(),
new VibrationShield(activity, getControllerTag()));
}
}
}