blob: eaf7c3e49a22f9517920c47f29e38cbd885082a7 [file] [log] [blame]
Borjan Tchakaloff03ce2032016-10-27 21:37:41 +02001package com.fairphone.checkup.tests.display;
Dirk Vogt5c7aed12015-10-22 00:28:03 +02002
3
4import android.content.Context;
5import android.view.MotionEvent;
6import android.view.View;
7import android.widget.RelativeLayout;
8import android.widget.ViewFlipper;
9
Borjan Tchakaloff03ce2032016-10-27 21:37:41 +020010import com.fairphone.checkup.R;
11import com.fairphone.checkup.tests.Test;
Dirk Vogt5c7aed12015-10-22 00:28:03 +020012
13
14public 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 Tchakaloff03ce2032016-10-27 21:37:41 +020030 @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 Tchakaloff533e1ca2016-10-31 17:50:29 +010040 @Override
41 protected int getTestInstructionsID() {
42 return R.string.lcd_test_instructions;
43 }
44
Dirk Vogt5c7aed12015-10-22 00:28:03 +020045 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 Vogt5c7aed12015-10-22 00:28:03 +020055 }
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 Tchakaloff03ce2032016-10-27 21:37:41 +020083 findViewById(R.id.test_button).setVisibility(View.INVISIBLE);
Dirk Vogt5c7aed12015-10-22 00:28:03 +020084 }
85
86 private void showStartButton() {
Borjan Tchakaloff03ce2032016-10-27 21:37:41 +020087 findViewById(R.id.test_button).setVisibility(View.VISIBLE);
Dirk Vogt5c7aed12015-10-22 00:28:03 +020088 }
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 Tchakaloff03ce2032016-10-27 21:37:41 +020094 mViewFlipper.addView(new FullColorTestView(getContext(), 0xffffffff));
95 mViewFlipper.addView(new FullColorTestView(getContext(), 0xff000000));
96 mViewFlipper.addView(new GradientTestView(getContext()));
Dirk Vogt5c7aed12015-10-22 00:28:03 +020097 }
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 Tchakaloff533e1ca2016-10-31 17:50:29 +0100134 displayInstructions();
Borjan Tchakaloff03ce2032016-10-27 21:37:41 +0200135 mParentLayout = (RelativeLayout) findViewById(R.id.generic_test_relative_layout);
Dirk Vogt5c7aed12015-10-22 00:28:03 +0200136 }
137}