@@ -101,10 +101,9 @@ pub struct CheckedGroupItemsInfo {
101
101
pub number_of_groups_with_all_items_checked : u64 ,
102
102
}
103
103
104
- // TODO - this will be broken for models with reference folders
105
104
fn get_checked_group_info_from_model ( model : & ModelRc < MainListModel > ) -> CheckedItemsInfo {
106
105
if model. iter ( ) . next ( ) . is_none ( ) {
107
- // Here I could panic, but i think that it is still possbile to go here, without doing anything wrong
106
+ // Here I could panic, but i think that it is still possible to go here, without doing anything wrong
108
107
return CheckedItemsInfo {
109
108
checked_items_number : 0 ,
110
109
groups_with_checked_items : None ,
@@ -118,11 +117,13 @@ fn get_checked_group_info_from_model(model: &ModelRc<MainListModel>) -> CheckedI
118
117
let mut current_group_all_checked = true ;
119
118
let mut group_with_selected_item = false ;
120
119
121
- // TODO Maybe a little useless, check if really needed
120
+ // TODO Maybe collecting is a little useless, check if really needed
122
121
let model_collected = model. iter ( ) . collect :: < Vec < _ > > ( ) ;
123
122
assert ! ( model_collected[ 0 ] . header_row) ;
124
123
assert ! ( !model_collected. last( ) . expect( "Is not empty" ) . header_row) ;
125
124
125
+ let is_reference_folder = model_collected[ 0 ] . filled_header_row ;
126
+
126
127
for item in model_collected. iter ( ) . skip ( 1 ) {
127
128
if item. header_row {
128
129
if current_group_all_checked {
@@ -150,6 +151,11 @@ fn get_checked_group_info_from_model(model: &ModelRc<MainListModel>) -> CheckedI
150
151
groups_with_checked_items += 1 ;
151
152
}
152
153
}
154
+ if is_reference_folder {
155
+ // In reference folders, this warning is not needed, because it only would make
156
+ // sense, when also header would be available to be checked, which is not possible
157
+ number_of_groups_with_all_items_checked = 0 ;
158
+ }
153
159
154
160
CheckedItemsInfo {
155
161
checked_items_number,
@@ -311,5 +317,25 @@ mod tests {
311
317
assert_eq ! ( result. checked_items_number, 3 ) ;
312
318
assert_eq ! ( groups_info. groups_with_checked_items, 2 ) ;
313
319
assert_eq ! ( groups_info. number_of_groups_with_all_items_checked, 1 ) ;
320
+
321
+ let mut items = get_model_vec ( 8 ) ;
322
+ items[ 0 ] . header_row = true ;
323
+ items[ 0 ] . filled_header_row = true ;
324
+ items[ 1 ] . checked = true ;
325
+ items[ 2 ] . checked = true ;
326
+ items[ 3 ] . checked = false ;
327
+ items[ 4 ] . header_row = true ;
328
+ items[ 4 ] . filled_header_row = true ;
329
+ items[ 5 ] . checked = true ;
330
+ items[ 6 ] . header_row = true ;
331
+ items[ 6 ] . filled_header_row = true ;
332
+ items[ 7 ] . checked = false ;
333
+
334
+ let model = ModelRc :: new ( VecModel :: from ( items) ) ;
335
+ let result = get_checked_group_info_from_model ( & model) ;
336
+ let groups_info = result. groups_with_checked_items . unwrap ( ) ;
337
+ assert_eq ! ( result. checked_items_number, 3 ) ;
338
+ assert_eq ! ( groups_info. groups_with_checked_items, 2 ) ;
339
+ assert_eq ! ( groups_info. number_of_groups_with_all_items_checked, 0 ) ;
314
340
}
315
341
}
0 commit comments