#endif
}
+// Returns the navigation controller for the queuing badge.
+- (id) queueBadgeController {
+ int index = [self indexOfTabWithTag:kManageTag];
+ if (index == -1) index = [self indexOfTabWithTag:kInstalledTag];
+
+ return [[tabbar_ viewControllers] objectAtIndex:index];
+}
+
- (void) cancelAndClear:(bool)clear {
@synchronized (self) {
if (clear) {
- /* XXX: clear marks instead of reloading data */
- /*pkgCacheFile &cache([database_ cache]);
+ // Clear all marks.
+ pkgCacheFile &cache([database_ cache]);
for (pkgCache::PkgIterator iterator = cache->PkgBegin(); !iterator.end(); ++iterator) {
- if (!cache[iterator].Keep()) cache->MarkKeep(iterator, false, false);
+ // Unmark method taken from Synaptic Package Manager.
+ // Thanks for being sane, unlike Aptitude.
+ if (!cache[iterator].Keep()) {
+ cache->MarkKeep(iterator, false);
+ cache->SetReInstall(iterator, false);
+ }
}
- [self updateData];
-
+ // Stop queuing.
Queuing_ = false;
- [[[[tabbar_ viewControllers] objectAtIndex:[self indexOfTabWithTag:kManageTag] != -1 ? [self indexOfTabWithTag:kManageTag] : [self indexOfTabWithTag:kInstalledTag]] tabBarItem] setBadgeValue:nil];
- [queueDelegate_ queueStatusDidChange];*/
- [self reloadData];
+ [[[self queueBadgeController] tabBarItem] setBadgeValue:nil];
} else {
+ // Start queuing.
Queuing_ = true;
-
- [[[[tabbar_ viewControllers] objectAtIndex:[self indexOfTabWithTag:kManageTag] != -1 ? [self indexOfTabWithTag:kManageTag] : [self indexOfTabWithTag:kInstalledTag]] tabBarItem] setBadgeValue:UCLocalize("Q_D")];
- [(CYNavigationController *)[tabbar_ selectedViewController] reloadData];
-
- [queueDelegate_ queueStatusDidChange];
- }
+ [[[self queueBadgeController] tabBarItem] setBadgeValue:UCLocalize("Q_D")];
+ }
+
+ // Show the changes in the current view.
+ [(CYNavigationController *) [tabbar_ selectedViewController] reloadData];
+ [queueDelegate_ queueStatusDidChange];
}
}