blob: eaf7c3e49a22f9517920c47f29e38cbd885082a7 [file] [log] [blame]
package com.fairphone.checkup.tests.display;
import android.content.Context;
import android.view.MotionEvent;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.ViewFlipper;
import com.fairphone.checkup.R;
import com.fairphone.checkup.tests.Test;
public class DisplayTest extends Test {
private static final String TAG = DisplayTest.class.getSimpleName();
private ViewFlipper mViewFlipper;
private RelativeLayout mParentLayout;
private int parentPaddingLeft;
private int parentPaddingTop;
private int parentPaddingRight;
private int parentPaddingBottom;
public DisplayTest(Context context) {
super(context);
}
@Override
protected int getTestTitleID() {
return R.string.lcd_test_title;
}
@Override
protected int getTestDescriptionID() {
return R.string.lcd_test_description;
}
@Override
protected int getTestInstructionsID() {
return R.string.lcd_test_instructions;
}
protected void saveParentPadding() {
parentPaddingLeft = mParentLayout.getPaddingLeft();
parentPaddingTop = mParentLayout.getPaddingTop();
parentPaddingRight = mParentLayout.getPaddingRight();
parentPaddingBottom = mParentLayout.getPaddingBottom();
}
protected void removeParentPaddingSave() {
saveParentPadding();
mParentLayout.setPadding(0, 0, 0, 0);
}
protected void restoreParentPadding() {
mParentLayout.setPadding(
parentPaddingLeft,
parentPaddingTop,
parentPaddingRight,
parentPaddingBottom);
}
private void switchToFullScreen() {
mViewFlipper = new ViewFlipper(getContext());
ViewFlipper.LayoutParams layoutParams = new ViewFlipper.LayoutParams(
ViewFlipper.LayoutParams.WRAP_CONTENT, ViewFlipper.LayoutParams.WRAP_CONTENT);
mViewFlipper.setLayoutParams(layoutParams);
mParentLayout.addView(mViewFlipper);
mViewFlipper.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
removeParentPaddingSave();
hideStartButton();
}
private void hideStartButton() {
findViewById(R.id.test_button).setVisibility(View.INVISIBLE);
}
private void showStartButton() {
findViewById(R.id.test_button).setVisibility(View.VISIBLE);
}
private void addDisplayPatterns() {
mViewFlipper.addView(new FullColorTestView(getContext(), 0xffff0000));
mViewFlipper.addView(new FullColorTestView(getContext(), 0xff00ff00));
mViewFlipper.addView(new FullColorTestView(getContext(), 0xff0000ff));
mViewFlipper.addView(new FullColorTestView(getContext(), 0xffffffff));
mViewFlipper.addView(new FullColorTestView(getContext(), 0xff000000));
mViewFlipper.addView(new GradientTestView(getContext()));
}
private void setTouchHandler() {
mViewFlipper.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
ViewFlipper viewFlipper = (ViewFlipper) v;
if (event.getAction() == MotionEvent.ACTION_DOWN) {
int displayedChild = viewFlipper.getDisplayedChild();
int childCount = viewFlipper.getChildCount();
if (displayedChild == childCount - 1) {
onTestSuccess();
}
viewFlipper.showNext();
}
return true;
}
});
}
@Override
protected void runTest() {
switchToFullScreen();
setTouchHandler();
addDisplayPatterns();
}
@Override
protected void onCleanUp() {
restoreParentPadding();
showStartButton();
mParentLayout.removeView(mViewFlipper);
super.onCleanUp();
}
@Override
protected void onPrepare() {
displayInstructions();
mParentLayout = (RelativeLayout) findViewById(R.id.generic_test_relative_layout);
}
}