add RATreeView as source
This commit is contained in:
62
doric-iOS/Devkit/Classes/RATreeView/RABatchChangeEntity.m
Normal file
62
doric-iOS/Devkit/Classes/RATreeView/RABatchChangeEntity.m
Normal file
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// RABatchChangesEntity.m
|
||||
// RATreeView
|
||||
//
|
||||
// Created by Rafal Augustyniak on 17/11/15.
|
||||
// Copyright © 2015 Rafal Augustyniak. All rights reserved.
|
||||
//
|
||||
|
||||
|
||||
#import "RABatchChangeEntity.h"
|
||||
|
||||
|
||||
@implementation RABatchChangeEntity
|
||||
|
||||
+ (instancetype)batchChangeEntityWithBlock:(void (^)())updates type:(RABatchChangeType)type ranking:(NSInteger)ranking
|
||||
{
|
||||
NSParameterAssert(updates);
|
||||
RABatchChangeEntity *entity = [RABatchChangeEntity new];
|
||||
entity.type = type;
|
||||
entity.ranking = ranking;
|
||||
entity.updatesBlock = updates;
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
- (NSComparisonResult)compare:(RABatchChangeEntity *)otherEntity
|
||||
{
|
||||
if ([self destructiveOperation]) {
|
||||
if (![otherEntity destructiveOperation]) {
|
||||
return NSOrderedAscending;
|
||||
} else {
|
||||
return [@(otherEntity.ranking) compare:@(self.ranking)];
|
||||
}
|
||||
} else if (self.type == RABatchChangeTypeItemMove && otherEntity.type != RABatchChangeTypeItemMove) {
|
||||
return [otherEntity destructiveOperation] ? NSOrderedAscending : NSOrderedDescending;
|
||||
|
||||
} else if ([self constructiveOperation]) {
|
||||
if (![otherEntity constructiveOperation]) {
|
||||
return NSOrderedDescending;
|
||||
} else {
|
||||
return [@(self.ranking) compare:@(otherEntity.ranking)];
|
||||
}
|
||||
|
||||
} else {
|
||||
return NSOrderedSame;
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)constructiveOperation
|
||||
{
|
||||
return self.type == RABatchChangeTypeItemRowExpansion
|
||||
|| self.type == RABatchChangeTypeItemRowInsertion;
|
||||
}
|
||||
|
||||
- (BOOL)destructiveOperation
|
||||
{
|
||||
return self.type == RABatchChangeTypeItemRowCollapse
|
||||
|| self.type == RABatchChangeTypeItemRowDeletion;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user