-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathSampleUiManager.java
More file actions
149 lines (124 loc) · 5.4 KB
/
SampleUiManager.java
File metadata and controls
149 lines (124 loc) · 5.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package org.researchstack.sampleapp;
import android.content.Context;
import org.researchstack.backbone.answerformat.BooleanAnswerFormat;
import org.researchstack.backbone.result.StepResult;
import org.researchstack.backbone.step.QuestionStep;
import org.researchstack.backbone.step.FormStep;
import org.researchstack.backbone.step.Step;
import org.researchstack.skin.ActionItem;
import org.researchstack.skin.UiManager;
import org.researchstack.skin.task.OnboardingTask;
import org.researchstack.skin.ui.LearnActivity;
import org.researchstack.skin.ui.fragment.ActivitiesFragment;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class SampleUiManager extends UiManager
{
/**
* @return List of ActionItems w/ Fragment class items
*/
@Override
public List<ActionItem> getMainTabBarItems()
{
List<ActionItem> navItems = new ArrayList<>();
navItems.add(new ActionItem.ActionItemBuilder().setId(R.id.nav_activities)
.setTitle(R.string.rss_activities)
.setIcon(R.drawable.rss_ic_tab_activities)
.setClass(ActivitiesFragment.class)
.build());
navItems.add(new ActionItem.ActionItemBuilder().setId(R.id.nav_dashboard)
.setTitle(R.string.rss_dashboard)
.setIcon(R.drawable.rss_ic_tab_dashboard)
.setClass(DashboardFragment.class)
.build());
return navItems;
}
/**
* @return List of ActionItems w/ Activity class items. The class items are then used to
* construct an intent for a MenuItem when {@link org.researchstack.skin.ui.MainActivity#onCreateOptionsMenu}
* is called
*/
@Override
public List<ActionItem> getMainActionBarItems()
{
List<ActionItem> navItems = new ArrayList<>();
navItems.add(new ActionItem.ActionItemBuilder().setId(R.id.nav_learn)
.setTitle(R.string.rss_learn)
.setIcon(R.drawable.rss_ic_action_learn)
.setClass(LearnActivity.class)
.build());
navItems.add(new ActionItem.ActionItemBuilder().setId(R.id.nav_settings)
.setTitle(R.string.rss_settings)
.setIcon(R.drawable.rss_ic_action_settings)
.setClass(SampleSettingsActivity.class)
.build());
return navItems;
}
/**
* This needs to change, strange that UIManager is handling step creation of OnboardingTask.
* We should have a place where all the steps are created and returned if dev wants to edit any
* step within said task.
*
* @return InclusionCriteria Step
* @param context
*/
@Override
public Step getInclusionCriteriaStep(Context context)
{
BooleanAnswerFormat booleanAnswerFormat = new BooleanAnswerFormat("true","false");
QuestionStep ageStep = new QuestionStep("signupInclusionAgeStep",
"Are you over 18 years of age?",
booleanAnswerFormat);
QuestionStep diagnosisStep = new QuestionStep("signupInclusionDiagnosisStep",
"Have you been diagnosed with pre-diabetes or diabetes?",
booleanAnswerFormat);
QuestionStep englishStep = new QuestionStep("signupInclusionEnglishStep",
"Can you read and understand English in order to provide informed consent and to follow the instructions?",
booleanAnswerFormat);
QuestionStep usaStep = new QuestionStep("signupInclusionUsaStep",
"Do you live in the United States of America?",
booleanAnswerFormat);
FormStep eligibilityFormStep = new FormStep(OnboardingTask.SignUpInclusionCriteriaStepIdentifier, "", "");
// Set items on FormStep
eligibilityFormStep.setStepTitle(R.string.rss_eligibility);
eligibilityFormStep.setOptional(false);
eligibilityFormStep.setFormSteps(ageStep, diagnosisStep, englishStep, usaStep);
return eligibilityFormStep;
}
private Boolean getBooleanAnswer(Map mapStepResult, String id){
StepResult stepResult = (StepResult)mapStepResult.get(id);
if (stepResult == null) return false;
Map mapResult = stepResult.getResults();
if (mapResult == null) return false;
Boolean answer = (Boolean)mapResult.get("answer");
System.out.println("id = : " + id + ", answer = " + answer);
if (answer == null || answer == false) return false;
else return true;
}
//If all answers are true, result is true
//If any answer is false, result is false
@Override
public boolean isInclusionCriteriaValid(StepResult stepResult)
{
if(stepResult != null)
{
Map mapStepResult = stepResult.getResults();
Boolean answer = getBooleanAnswer(mapStepResult, "signupInclusionAgeStep");
if (answer == false) return false;
answer = getBooleanAnswer(mapStepResult, "signupInclusionDiagnosisStep");
if (answer == false) return false;
answer = getBooleanAnswer(mapStepResult, "signupInclusionEnglishStep");
if (answer == false) return false;
answer = getBooleanAnswer(mapStepResult, "signupInclusionUsaStep");
if (answer == false) return false;
return true;
}
return false;
}
@Override
public boolean isConsentSkippable()
{
return true;
}
}