UITableViewDelegate
> {
_transient Database *database_;
- NSMutableArray *packages_;
+ CFMutableArrayRef packages_;
NSMutableArray *sections_;
UITableView *list_;
unsigned upgrades_;
[list_ setDelegate:nil];
[list_ setDataSource:nil];
- [packages_ release];
+ CFRelease(packages_);
+
[sections_ release];
[list_ release];
[super dealloc];
return [[sections_ objectAtIndex:section] count];
}
+- (Package *) packageAtIndex:(NSUInteger)index {
+ return (Package *) CFArrayGetValueAtIndex(packages_, index);
+}
+
- (Package *) packageAtIndexPath:(NSIndexPath *)path {
Section *section([sections_ objectAtIndex:[path section]]);
NSInteger row([path row]);
- return [packages_ objectAtIndex:([section row] + row)];
+ return [self packageAtIndex:([section row] + row)];
}
- (UITableViewCell *) tableView:(UITableView *)table cellForRowAtIndexPath:(NSIndexPath *)path {
database_ = database;
[[self navigationItem] setTitle:UCLocalize("CHANGES")];
- packages_ = [[NSMutableArray arrayWithCapacity:16] retain];
+ packages_ = CFArrayCreateMutable(kCFAllocatorDefault, 0, NULL);
+
sections_ = [[NSMutableArray arrayWithCapacity:16] retain];
list_ = [[UITableView alloc] initWithFrame:[[self view] bounds] style:UITableViewStylePlain];
[package uninstalled] && [package valid] && [package visible] ||
[package upgradableAndEssential:YES]
)
- [packages_ addObject:package];
+ CFArrayAppendValue(packages_, package);
_trace();
- [packages_ radixSortUsingFunction:reinterpret_cast<SKRadixFunction>(&PackageChangesRadix) withContext:NULL];
+ [(NSMutableArray *) packages_ radixSortUsingFunction:reinterpret_cast<SKRadixFunction>(&PackageChangesRadix) withContext:NULL];
_trace();
}
- (void) reloadData {
NSArray *packages = [database_ packages];
- [packages_ removeAllObjects];
+ CFArrayRemoveAllValues(packages_);
+
[sections_ removeAllObjects];
UIProgressHUD *hud([delegate_ addProgressHUD]);
CFDateFormatterRef formatter(CFDateFormatterCreate(NULL, Locale_, kCFDateFormatterMediumStyle, kCFDateFormatterMediumStyle));
- for (size_t offset = 0, count = [packages_ count]; offset != count; ++offset) {
- Package *package = [packages_ objectAtIndex:offset];
+ for (size_t offset = 0, count = CFArrayGetCount(packages_); offset != count; ++offset) {
+ Package *package = [self packageAtIndex:offset];
BOOL uae = [package upgradableAndEssential:YES];
if (unseens) {
Section *last = [sections_ lastObject];
size_t count = [last count];
- [packages_ removeObjectsInRange:NSMakeRange([packages_ count] - count, count)];
+ CFArrayReplaceValues(packages_, CFRangeMake(CFArrayGetCount(packages_) - count, count), NULL, 0);
[sections_ removeLastObject];
}