/
Config.java
133 lines (118 loc) · 4.39 KB
/
Config.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
132
133
/*
* Copyright 2016 Patrick Favre-Bulle
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package at.favre.lib.hood.interfaces;
public final class Config {
private static final String TAG = Config.class.getName();
public final boolean showZebra;
public final boolean showHighlightContent;
public final boolean autoLog;
public final boolean autoRefresh;
public final long autoRefreshIntervalMs;
public final String logTag;
public final boolean showPagesIndicator;
private Config(boolean showZebra, boolean showHighlightContent, boolean autoLog, boolean autoRefresh, long autoRefreshIntervalMs, String logTag, boolean showPagesIndicator) {
this.showZebra = showZebra;
this.showHighlightContent = showHighlightContent;
this.autoLog = autoLog;
this.autoRefresh = autoRefresh;
this.autoRefreshIntervalMs = autoRefreshIntervalMs;
this.logTag = logTag;
this.showPagesIndicator = showPagesIndicator;
}
public static Builder newBuilder() {
return new Builder();
}
public static final class Builder {
private boolean showZebra = true;
private boolean showHighlightContent = false;
private boolean autoLog = true;
private boolean autoRefresh = false;
private long autoRefreshIntervalMs = 10_000;
private String logTag = TAG;
private boolean showPagesIndicator = true;
private Builder() {
}
/**
* UI showing zebra pattern (highlighting every other row)
*
* @param showZebra
*/
public Builder setShowZebra(boolean showZebra) {
this.showZebra = showZebra;
return this;
}
/**
* UI highlighting content area with zebra color
*
* @param showHighlightContent
*/
public Builder setShowHighlightContent(boolean showHighlightContent) {
this.showHighlightContent = showHighlightContent;
return this;
}
/**
* If true will automatically log the whole page content to console when the view
* is instantiated.
*
* @param autoLogEnabled
*/
public Builder setAutoLog(boolean autoLogEnabled) {
this.autoLog = autoLogEnabled;
return this;
}
/**
* If true will auto refresh the view
*
* @param autoRefreshEnabled
*/
public Builder setAutoRefresh(boolean autoRefreshEnabled) {
this.autoRefresh = autoRefreshEnabled;
return this;
}
/**
* If true will auto refresh the view. This call can set the refresh interval in ms (min is 300ms)
*
* @param autoRefreshEnabled
* @param intervalMs min is 300ms - time between refreshes
*/
public Builder setAutoRefresh(boolean autoRefreshEnabled, long intervalMs) {
this.autoRefresh = autoRefreshEnabled;
this.autoRefreshIntervalMs = Math.max(300, intervalMs);
return this;
}
/**
* Sets the tag which is used to log debug data to console (see {@link android.util.Log#w(String, String)}
*
* @param logTag
*/
public Builder setLogTag(String logTag) {
this.logTag = logTag;
return this;
}
/**
* Enables or disables the viewpager page indicator (only visible if more than one page)
*
* @param showPagesIndicator
*/
public Builder setShowPagesIndicatorOnMultiplePages(boolean showPagesIndicator) {
this.showPagesIndicator = showPagesIndicator;
return this;
}
public Config build() {
return new Config(showZebra, showHighlightContent, autoLog, autoRefresh, autoRefreshIntervalMs, logTag, showPagesIndicator);
}
}
}