Borjan Tchakaloff | 03ce203 | 2016-10-27 21:37:41 +0200 | [diff] [blame] | 1 | package com.fairphone.checkup.tests.display; |
Dirk Vogt | 5c7aed1 | 2015-10-22 00:28:03 +0200 | [diff] [blame] | 2 | |
| 3 | |
| 4 | import android.content.Context; |
| 5 | import android.view.MotionEvent; |
| 6 | import android.view.View; |
| 7 | import android.widget.RelativeLayout; |
| 8 | import android.widget.ViewFlipper; |
| 9 | |
Borjan Tchakaloff | 03ce203 | 2016-10-27 21:37:41 +0200 | [diff] [blame] | 10 | import com.fairphone.checkup.R; |
| 11 | import com.fairphone.checkup.tests.Test; |
Dirk Vogt | 5c7aed1 | 2015-10-22 00:28:03 +0200 | [diff] [blame] | 12 | |
| 13 | |
| 14 | public class DisplayTest extends Test { |
| 15 | |
| 16 | private static final String TAG = DisplayTest.class.getSimpleName(); |
| 17 | |
| 18 | private ViewFlipper mViewFlipper; |
| 19 | private RelativeLayout mParentLayout; |
| 20 | |
| 21 | private int parentPaddingLeft; |
| 22 | private int parentPaddingTop; |
| 23 | private int parentPaddingRight; |
| 24 | private int parentPaddingBottom; |
| 25 | |
| 26 | public DisplayTest(Context context) { |
| 27 | super(context); |
| 28 | } |
| 29 | |
Borjan Tchakaloff | 03ce203 | 2016-10-27 21:37:41 +0200 | [diff] [blame] | 30 | @Override |
| 31 | protected int getTestTitleID() { |
| 32 | return R.string.lcd_test_title; |
| 33 | } |
| 34 | |
| 35 | @Override |
| 36 | protected int getTestDescriptionID() { |
| 37 | return R.string.lcd_test_description; |
| 38 | } |
| 39 | |
Borjan Tchakaloff | 533e1ca | 2016-10-31 17:50:29 +0100 | [diff] [blame] | 40 | @Override |
| 41 | protected int getTestInstructionsID() { |
| 42 | return R.string.lcd_test_instructions; |
| 43 | } |
| 44 | |
Dirk Vogt | 5c7aed1 | 2015-10-22 00:28:03 +0200 | [diff] [blame] | 45 | protected void saveParentPadding() { |
| 46 | parentPaddingLeft = mParentLayout.getPaddingLeft(); |
| 47 | parentPaddingTop = mParentLayout.getPaddingTop(); |
| 48 | parentPaddingRight = mParentLayout.getPaddingRight(); |
| 49 | parentPaddingBottom = mParentLayout.getPaddingBottom(); |
| 50 | } |
| 51 | |
| 52 | protected void removeParentPaddingSave() { |
| 53 | saveParentPadding(); |
| 54 | mParentLayout.setPadding(0, 0, 0, 0); |
Dirk Vogt | 5c7aed1 | 2015-10-22 00:28:03 +0200 | [diff] [blame] | 55 | } |
| 56 | |
| 57 | protected void restoreParentPadding() { |
| 58 | mParentLayout.setPadding( |
| 59 | parentPaddingLeft, |
| 60 | parentPaddingTop, |
| 61 | parentPaddingRight, |
| 62 | parentPaddingBottom); |
| 63 | } |
| 64 | |
| 65 | private void switchToFullScreen() { |
| 66 | mViewFlipper = new ViewFlipper(getContext()); |
| 67 | ViewFlipper.LayoutParams layoutParams = new ViewFlipper.LayoutParams( |
| 68 | ViewFlipper.LayoutParams.WRAP_CONTENT, ViewFlipper.LayoutParams.WRAP_CONTENT); |
| 69 | mViewFlipper.setLayoutParams(layoutParams); |
| 70 | mParentLayout.addView(mViewFlipper); |
| 71 | |
| 72 | mViewFlipper.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE |
| 73 | | View.SYSTEM_UI_FLAG_FULLSCREEN |
| 74 | | View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
| 75 | | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
| 76 | | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
| 77 | | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); |
| 78 | removeParentPaddingSave(); |
| 79 | hideStartButton(); |
| 80 | } |
| 81 | |
| 82 | private void hideStartButton() { |
Borjan Tchakaloff | 03ce203 | 2016-10-27 21:37:41 +0200 | [diff] [blame] | 83 | findViewById(R.id.test_button).setVisibility(View.INVISIBLE); |
Dirk Vogt | 5c7aed1 | 2015-10-22 00:28:03 +0200 | [diff] [blame] | 84 | } |
| 85 | |
| 86 | private void showStartButton() { |
Borjan Tchakaloff | 03ce203 | 2016-10-27 21:37:41 +0200 | [diff] [blame] | 87 | findViewById(R.id.test_button).setVisibility(View.VISIBLE); |
Dirk Vogt | 5c7aed1 | 2015-10-22 00:28:03 +0200 | [diff] [blame] | 88 | } |
| 89 | |
| 90 | private void addDisplayPatterns() { |
| 91 | mViewFlipper.addView(new FullColorTestView(getContext(), 0xffff0000)); |
| 92 | mViewFlipper.addView(new FullColorTestView(getContext(), 0xff00ff00)); |
| 93 | mViewFlipper.addView(new FullColorTestView(getContext(), 0xff0000ff)); |
Borjan Tchakaloff | 03ce203 | 2016-10-27 21:37:41 +0200 | [diff] [blame] | 94 | mViewFlipper.addView(new FullColorTestView(getContext(), 0xffffffff)); |
| 95 | mViewFlipper.addView(new FullColorTestView(getContext(), 0xff000000)); |
| 96 | mViewFlipper.addView(new GradientTestView(getContext())); |
Dirk Vogt | 5c7aed1 | 2015-10-22 00:28:03 +0200 | [diff] [blame] | 97 | } |
| 98 | |
| 99 | private void setTouchHandler() { |
| 100 | mViewFlipper.setOnTouchListener(new View.OnTouchListener() { |
| 101 | @Override |
| 102 | public boolean onTouch(View v, MotionEvent event) { |
| 103 | ViewFlipper viewFlipper = (ViewFlipper) v; |
| 104 | if (event.getAction() == MotionEvent.ACTION_DOWN) { |
| 105 | int displayedChild = viewFlipper.getDisplayedChild(); |
| 106 | int childCount = viewFlipper.getChildCount(); |
| 107 | if (displayedChild == childCount - 1) { |
| 108 | onTestSuccess(); |
| 109 | } |
| 110 | viewFlipper.showNext(); |
| 111 | } |
| 112 | return true; |
| 113 | } |
| 114 | }); |
| 115 | } |
| 116 | |
| 117 | @Override |
| 118 | protected void runTest() { |
| 119 | switchToFullScreen(); |
| 120 | setTouchHandler(); |
| 121 | addDisplayPatterns(); |
| 122 | } |
| 123 | |
| 124 | @Override |
| 125 | protected void onCleanUp() { |
| 126 | restoreParentPadding(); |
| 127 | showStartButton(); |
| 128 | mParentLayout.removeView(mViewFlipper); |
| 129 | super.onCleanUp(); |
| 130 | } |
| 131 | |
| 132 | @Override |
| 133 | protected void onPrepare() { |
Borjan Tchakaloff | 533e1ca | 2016-10-31 17:50:29 +0100 | [diff] [blame] | 134 | displayInstructions(); |
Borjan Tchakaloff | 03ce203 | 2016-10-27 21:37:41 +0200 | [diff] [blame] | 135 | mParentLayout = (RelativeLayout) findViewById(R.id.generic_test_relative_layout); |
Dirk Vogt | 5c7aed1 | 2015-10-22 00:28:03 +0200 | [diff] [blame] | 136 | } |
| 137 | } |