@@ -51,42 +51,62 @@ public static final class Range {
51
51
52
52
private Range () { }
53
53
54
- public static Range parse (String value ) {
55
- if (value == null || value .isEmpty ())
56
- return createDefault ();
57
-
58
- String [] buf = value .split ("\\ |" );
59
- Range r = new Range ();
60
- r .id = buf [0 ];
61
- r .days = new HashSet <String >(Arrays .asList (buf [1 ].split ("," )));
62
- r .startTime = Integer .valueOf (buf [2 ]);
63
- r .endTime = Integer .valueOf (buf [3 ]);
54
+ public static Range parse (Set <String > dataSet ) {
55
+ Range r = createDefault ();
56
+ if (dataSet == null || dataSet .isEmpty ())
57
+ return r ;
58
+
59
+ for (String val : dataSet ) {
60
+ String [] data = val .split (":" , 2 );
61
+ if (data [0 ].equals ("id" )) {
62
+ r .id = data [1 ];
63
+ } else if (data [0 ].equals ("days" )) {
64
+ r .days = new HashSet <String >(Arrays .asList (data [1 ].split ("," )));
65
+ } else if (data [0 ].equals ("startTime" )) {
66
+ r .startTime = Integer .valueOf (data [1 ]);
67
+ } else if (data [0 ].equals ("endTime" )) {
68
+ r .endTime = Integer .valueOf (data [1 ]);
69
+ }
70
+ }
64
71
return r ;
65
72
}
66
73
67
74
public static Range createDefault () {
68
75
Range r = new Range ();
69
- r .id = UUID .randomUUID ().toString ();
76
+ r .id = String . format ( "qhr-%s" , UUID .randomUUID ().toString () );
70
77
r .days = new HashSet <String >(Arrays .asList ("1" ,"2" ,"3" ,"4" ,"5" ,"6" ,"7" ));
71
78
r .startTime = 1380 ;
72
79
r .endTime = 360 ;
73
80
return r ;
74
81
}
75
82
76
- public String getValue () {
77
- String buf = id + "|" ;
83
+ public Set <String > getValue () {
84
+ Set <String > dataSet = new HashSet <String >();
85
+ dataSet .add ("id:" + id );
86
+ String buf = "" ;
78
87
for (String day : days ) {
79
- if (!buf .endsWith ( "|" )) buf += "," ;
88
+ if (!buf .isEmpty ( )) buf += "," ;
80
89
buf += day ;
81
90
}
82
- buf += "|" + String .valueOf (startTime );
83
- buf += "|" + String .valueOf (endTime );
84
- return buf ;
91
+ dataSet .add ("days:" + buf );
92
+ dataSet .add ("startTime:" + String .valueOf (startTime ));
93
+ dataSet .add ("endTime:" + String .valueOf (endTime ));
94
+ return dataSet ;
85
95
}
86
96
87
97
public boolean endsNextDay () {
88
98
return (endTime < startTime );
89
99
}
100
+
101
+ public static ArrayList <String > getIdList (SharedPreferences prefs ) {
102
+ ArrayList <String > list = new ArrayList <>();
103
+ for (String key : prefs .getAll ().keySet ()) {
104
+ if (key .startsWith ("qhr-" )) {
105
+ list .add (key );
106
+ }
107
+ }
108
+ return list ;
109
+ }
90
110
}
91
111
92
112
private static final List <String > NOTIF_TEXT_FIELDS = new ArrayList <>(Arrays .asList (
@@ -103,7 +123,7 @@ public boolean endsNextDay() {
103
123
public boolean interactive ;
104
124
public boolean muteSystemVibe ;
105
125
public Set <String > ringerWhitelist ;
106
- private Set <String > ranges ;
126
+ private Set <Range > ranges ;
107
127
108
128
public QuietHours (Bundle prefs ) {
109
129
uncLocked = prefs .getBoolean (QuietHoursActivity .EXTRA_QH_LOCKED );
@@ -116,7 +136,12 @@ public QuietHours(Bundle prefs) {
116
136
interactive = prefs .getBoolean (QuietHoursActivity .EXTRA_QH_INTERACTIVE );
117
137
muteSystemVibe = prefs .getBoolean (QuietHoursActivity .EXTRA_QH_MUTE_SYSTEM_VIBE );
118
138
ringerWhitelist = new HashSet <String >(prefs .getStringArrayList (QuietHoursActivity .EXTRA_QH_RINGER_WHITELIST ));
119
- ranges = new HashSet <String >(prefs .getStringArrayList (QuietHoursActivity .EXTRA_QH_RANGES ));
139
+ ranges = new HashSet <Range >();
140
+ for (String key : prefs .keySet ()) {
141
+ if (key .startsWith ("qhr-" )) {
142
+ ranges .add (Range .parse (new HashSet <>(prefs .getStringArrayList (key ))));
143
+ }
144
+ }
120
145
}
121
146
122
147
public QuietHours (SharedPreferences prefs ) {
@@ -132,8 +157,12 @@ public QuietHours(SharedPreferences prefs) {
132
157
muteSystemVibe = prefs .getBoolean (QuietHoursActivity .PREF_KEY_MUTE_SYSTEM_VIBE , false );
133
158
ringerWhitelist = prefs .getStringSet (QuietHoursActivity .PREF_KEY_QH_RINGER_WHITELIST ,
134
159
new HashSet <String >());
135
- ranges = prefs .getStringSet (QuietHoursActivity .PREF_KEY_QH_RANGES ,
136
- new HashSet <String >());
160
+ ranges = new HashSet <Range >();
161
+ for (String key : prefs .getAll ().keySet ()) {
162
+ if (key .startsWith ("qhr-" )) {
163
+ ranges .add (Range .parse (new HashSet <>(prefs .getStringSet (key , null ))));
164
+ }
165
+ }
137
166
}
138
167
139
168
public boolean quietHoursActive (LedSettings ls , Notification n , boolean userPresent ) {
@@ -181,8 +210,7 @@ public boolean quietHoursActive() {
181
210
int curDay = c .get (Calendar .DAY_OF_WEEK );
182
211
int prevDay = (curDay == 1 ? 7 : curDay - 1 );
183
212
184
- for (String rangeValue : ranges ) {
185
- Range range = Range .parse (rangeValue );
213
+ for (Range range : ranges ) {
186
214
boolean active = false ;
187
215
if (range .endsNextDay ()) {
188
216
active = (curMin >= range .startTime && range .days .contains (String .valueOf (curDay )) ||
0 commit comments