/
PermissionModelBuilder.java
131 lines (106 loc) · 4.27 KB
/
PermissionModelBuilder.java
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
package com.fastaccess.permission.base.model;
import android.content.Context;
import android.graphics.Color;
import android.support.annotation.ColorInt;
import android.support.annotation.ColorRes;
import android.support.annotation.DimenRes;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.support.v4.app.ActivityCompat;
import com.fastaccess.permission.R;
public class PermissionModelBuilder {
private final PermissionModel permissionModel;
private Context context;
private PermissionModelBuilder(@NonNull Context context) {
this.context = context;
this.permissionModel = new PermissionModel(); // Generate sane default values
withTextColor(Color.WHITE);
withTextSize(R.dimen.permissions_text_size);
withRequestIcon(R.drawable.ic_arrow_done);
withPreviousIcon(R.drawable.ic_arrow_left);
withNextIcon(R.drawable.ic_arrow_right);
}
public static PermissionModelBuilder withContext(@NonNull Context context) {
return new PermissionModelBuilder(context);
}
public PermissionModel build() {
return permissionModel;
}
public PermissionModelBuilder withPermissionName(@NonNull String permissionName) {
this.permissionModel.setPermissionName(permissionName);
return this;
}
public PermissionModelBuilder withImageResourceId(@DrawableRes int imageResourceId) {
this.permissionModel.setImageResourceId(imageResourceId);
return this;
}
public PermissionModelBuilder withLayoutColor(@ColorInt int layoutColor) {
this.permissionModel.setLayoutColor(layoutColor);
return this;
}
public PermissionModelBuilder withLayoutColorRes(@ColorRes int layoutColor) {
this.permissionModel.setLayoutColor(ActivityCompat.getColor(context, layoutColor));
return this;
}
public PermissionModelBuilder withTextColor(@ColorInt int textColor) {
this.permissionModel.setTextColor(textColor);
return this;
}
public PermissionModelBuilder withTextColorRes(@ColorRes int textColor) {
this.permissionModel.setTextColor(ActivityCompat.getColor(context, textColor));
return this;
}
public PermissionModelBuilder withTextSize(@DimenRes int textSize) {
this.permissionModel.setTextSize(textSize);
return this;
}
public PermissionModelBuilder withExplanationMessage(@NonNull String explanationMessage) {
this.permissionModel.setExplanationMessage(explanationMessage);
return this;
}
public PermissionModelBuilder withExplanationMessage(@StringRes int explanationMessage) {
this.permissionModel.setExplanationMessage(context.getString(explanationMessage));
return this;
}
public PermissionModelBuilder withCanSkip(boolean canSkip) {
this.permissionModel.setCanSkip(canSkip);
return this;
}
public PermissionModelBuilder withRequestIcon(@DrawableRes int requestIcon) {
this.permissionModel.setRequestIcon(requestIcon);
return this;
}
public PermissionModelBuilder withPreviousIcon(@DrawableRes int previousIcon) {
this.permissionModel.setPreviousIcon(previousIcon);
return this;
}
public PermissionModelBuilder withNextIcon(@DrawableRes int nextIcon) {
this.permissionModel.setNextIcon(nextIcon);
return this;
}
public PermissionModelBuilder withMessage(@NonNull String message) {
this.permissionModel.setMessage(message);
return this;
}
public PermissionModelBuilder withMessage(@StringRes int message) {
this.permissionModel.setMessage(context.getString(message));
return this;
}
public PermissionModelBuilder withTitle(@NonNull String title) {
this.permissionModel.setTitle(title);
return this;
}
public PermissionModelBuilder withTitle(@StringRes int title) {
this.permissionModel.setTitle(context.getString(title));
return this;
}
/**
* @param fontType
* ex: (fonts/my_custom_text.ttf);
*/
public PermissionModelBuilder withFontType(@NonNull String fontType) {
this.permissionModel.setFontType(fontType);
return this;
}
}