+++ /dev/null
-/* Source {{{ */
-@interface Source : NSObject {
- NSString *description_;
- NSString *label_;
- NSString *origin_;
-
- NSString *uri_;
- NSString *distribution_;
- NSString *type_;
-
- BOOL trusted_;
-}
-
-- (void) dealloc;
-
-- (Source *) initWithMetaIndex:(metaIndex *)index;
-
-- (BOOL) trusted;
-
-- (NSString *) uri;
-- (NSString *) distribution;
-- (NSString *) type;
-
-- (NSString *) description;
-- (NSString *) label;
-- (NSString *) origin;
-@end
-
-@implementation Source
-
-- (void) dealloc {
- [uri_ release];
- [distribution_ release];
- [type_ release];
-
- if (description_ != nil)
- [description_ release];
- if (label_ != nil)
- [label_ release];
- if (origin_ != nil)
- [origin_ release];
-
- [super dealloc];
-}
-
-- (Source *) initWithMetaIndex:(metaIndex *)index {
- if ((self = [super init]) != nil) {
- trusted_ = index->IsTrusted();
-
- uri_ = [[NSString stringWithCString:index->GetURI().c_str()] retain];
- distribution_ = [[NSString stringWithCString:index->GetDist().c_str()] retain];
- type_ = [[NSString stringWithCString:index->GetType()] retain];
-
- description_ = nil;
- label_ = nil;
- origin_ = nil;
-
- debReleaseIndex *dindex(dynamic_cast<debReleaseIndex *>(index));
- if (dindex != NULL) {
- std::ifstream release(dindex->MetaIndexFile("Release").c_str());
- std::string line;
- while (std::getline(release, line)) {
- std::string::size_type colon(line.find(':'));
- if (colon == std::string::npos)
- continue;
-
- std::string name(line.substr(0, colon));
- std::string value(line.substr(colon + 1));
- while (!value.empty() && value[0] == ' ')
- value = value.substr(1);
-
- if (name == "Description")
- description_ = [[NSString stringWithCString:value.c_str()] retain];
- else if (name == "Label")
- label_ = [[NSString stringWithCString:value.c_str()] retain];
- else if (name == "Origin")
- origin_ = [[NSString stringWithCString:value.c_str()] retain];
- }
- }
- } return self;
-}
-
-- (BOOL) trusted {
- return trusted_;
-}
-
-- (NSString *) uri {
- return uri_;
-}
-
-- (NSString *) distribution {
- return distribution_;
-}
-
-- (NSString *) type {
- return type_;
-}
-
-- (NSString *) description {
- return description_;
-}
-
-- (NSString *) label {
- return label_;
-}
-
-- (NSString *) origin {
- return origin_;
-}
-
-@end
-/* }}} */
-/* Source Cell {{{ */
-@interface SourceCell : UITableCell {
- UITextLabel *description_;
- UIRightTextLabel *label_;
- UITextLabel *origin_;
-}
-
-- (void) dealloc;
-
-- (SourceCell *) initWithSource:(Source *)source;
-
-- (void) _setSelected:(float)fraction;
-- (void) setSelected:(BOOL)selected;
-- (void) setSelected:(BOOL)selected withFade:(BOOL)fade;
-- (void) _setSelectionFadeFraction:(float)fraction;
-
-@end
-
-@implementation SourceCell
-
-- (void) dealloc {
- [description_ release];
- [label_ release];
- [origin_ release];
- [super dealloc];
-}
-
-- (SourceCell *) initWithSource:(Source *)source {
- if ((self = [super init]) != nil) {
- GSFontRef bold = GSFontCreateWithName("Helvetica", kGSFontTraitBold, 20);
- GSFontRef small = GSFontCreateWithName("Helvetica", kGSFontTraitNone, 14);
-
- CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
- float clear[] = {0, 0, 0, 0};
-
- NSString *description = [source description];
- if (description == nil)
- description = [source uri];
-
- description_ = [[UITextLabel alloc] initWithFrame:CGRectMake(12, 7, 270, 25)];
- [description_ setBackgroundColor:CGColorCreate(space, clear)];
- [description_ setFont:bold];
- [description_ setText:description];
-
- NSString *label = [source label];
- if (label == nil)
- label = [source type];
-
- label_ = [[UIRightTextLabel alloc] initWithFrame:CGRectMake(290, 32, 90, 25)];
- [label_ setBackgroundColor:CGColorCreate(space, clear)];
- [label_ setFont:small];
- [label_ setText:label];
-
- NSString *origin = [source origin];
- if (origin == nil)
- origin = [source distribution];
-
- origin_ = [[UITextLabel alloc] initWithFrame:CGRectMake(13, 35, 315, 20)];
- [origin_ setBackgroundColor:CGColorCreate(space, clear)];
- [origin_ setFont:small];
- [origin_ setText:origin];
-
- [self addSubview:description_];
- [self addSubview:label_];
- [self addSubview:origin_];
-
- CFRelease(small);
- CFRelease(bold);
- } return self;
-}
-
-- (void) _setSelected:(float)fraction {
- CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
-
- float black[] = {
- interpolate(0.0, 1.0, fraction),
- interpolate(0.0, 1.0, fraction),
- interpolate(0.0, 1.0, fraction),
- 1.0};
-
- float blue[] = {
- interpolate(0.2, 1.0, fraction),
- interpolate(0.2, 1.0, fraction),
- interpolate(1.0, 1.0, fraction),
- 1.0};
-
- float gray[] = {
- interpolate(0.4, 1.0, fraction),
- interpolate(0.4, 1.0, fraction),
- interpolate(0.4, 1.0, fraction),
- 1.0};
-
- [description_ setColor:CGColorCreate(space, black)];
- [label_ setColor:CGColorCreate(space, blue)];
- [origin_ setColor:CGColorCreate(space, gray)];
-}
-
-- (void) setSelected:(BOOL)selected {
- [self _setSelected:(selected ? 1.0 : 0.0)];
- [super setSelected:selected];
-}
-
-- (void) setSelected:(BOOL)selected withFade:(BOOL)fade {
- if (!fade)
- [self _setSelected:(selected ? 1.0 : 0.0)];
- [super setSelected:selected withFade:fade];
-}
-
-- (void) _setSelectionFadeFraction:(float)fraction {
- [self _setSelected:fraction];
- [super _setSelectionFadeFraction:fraction];
-}
-
-@end
-/* }}} */
-
-/* Sources View {{{ */
-@interface SourcesView : UIView {
- UISectionList *list_;
- Database *database_;
- id delegate_;
- NSMutableArray *sources_;
- UIActionSheet *alert_;
-}
-
-- (int) numberOfSectionsInSectionList:(UISectionList *)list;
-- (NSString *) sectionList:(UISectionList *)list titleForSection:(int)section;
-- (int) sectionList:(UISectionList *)list rowForSection:(int)section;
-
-- (int) numberOfRowsInTable:(UITable *)table;
-- (float) table:(UITable *)table heightForRow:(int)row;
-- (UITableCell *) table:(UITable *)table cellForRow:(int)row column:(UITableColumn *)col;
-- (BOOL) table:(UITable *)table showDisclosureForRow:(int)row;
-- (void) tableRowSelected:(NSNotification*)notification;
-
-- (void) navigationBar:(UINavigationBar *)navbar buttonClicked:(int)button;
-
-- (void) dealloc;
-- (id) initWithFrame:(CGRect)frame database:(Database *)database;
-- (void) setDelegate:(id)delegate;
-- (void) reloadData;
-- (NSString *) leftTitle;
-- (NSString *) rightTitle;
-@end
-
-@implementation SourcesView
-
-- (int) numberOfSectionsInSectionList:(UISectionList *)list {
- return 1;
-}
-
-- (NSString *) sectionList:(UISectionList *)list titleForSection:(int)section {
- return @"sources";
-}
-
-- (int) sectionList:(UISectionList *)list rowForSection:(int)section {
- return 0;
-}
-
-- (int) numberOfRowsInTable:(UITable *)table {
- return [sources_ count];
-}
-
-- (float) table:(UITable *)table heightForRow:(int)row {
- return 64;
-}
-
-- (UITableCell *) table:(UITable *)table cellForRow:(int)row column:(UITableColumn *)col {
- return [[[SourceCell alloc] initWithSource:[sources_ objectAtIndex:row]] autorelease];
-}
-
-- (BOOL) table:(UITable *)table showDisclosureForRow:(int)row {
- return NO;
-}
-
-- (void) tableRowSelected:(NSNotification*)notification {
- UITable *table([list_ table]);
- int row([table selectedRow]);
- if (row == INT_MAX)
- return;
-
- [table selectRow:-1 byExtendingSelection:NO withFade:YES];
-}
-
-- (void) alertSheet:(UIActionSheet *)sheet buttonClicked:(int)button {
- [alert_ dismiss];
- [alert_ release];
- alert_ = nil;
-}
-
-- (void) navigationBar:(UINavigationBar *)navbar buttonClicked:(int)button {
- switch (button) {
- case 0:
- alert_ = [[UIActionSheet alloc]
- initWithTitle:@"Unimplemented"
- buttons:[NSArray arrayWithObjects:@"Okay", nil]
- defaultButtonIndex:0
- delegate:self
- context:self
- ];
-
- [alert_ setBodyText:@"This feature will be implemented soon. In the mean time, you may add sources by adding .list files to '/etc/apt/sources.list.d'. If you'd like to be in the default list, please contact the author of Packager."];
- [alert_ popupAlertAnimated:YES];
- break;
-
- case 1:
- [delegate_ update];
- break;
- }
-}
-
-- (void) dealloc {
- if (sources_ != nil)
- [sources_ release];
- [list_ release];
- [super dealloc];
-}
-
-- (id) initWithFrame:(CGRect)frame database:(Database *)database {
- if ((self = [super initWithFrame:frame]) != nil) {
- database_ = database;
- sources_ = nil;
-
- CGSize navsize = [UINavigationBar defaultSize];
- CGRect navrect = {{0, 0}, navsize};
- CGRect bounds = [self bounds];
-
- navbar_ = [[UINavigationBar alloc] initWithFrame:navrect];
- [self addSubview:navbar_];
-
- [navbar_ setBarStyle:1];
- [navbar_ setDelegate:self];
-
- UINavigationItem *navitem = [[[UINavigationItem alloc] initWithTitle:@"Sources"] autorelease];
- [navbar_ pushNavigationItem:navitem];
-
- list_ = [[UISectionList alloc] initWithFrame:CGRectMake(
- 0, navsize.height, bounds.size.width, bounds.size.height - navsize.height
- )];
-
- [self addSubview:list_];
-
- [list_ setDataSource:self];
- [list_ setShouldHideHeaderInShortLists:NO];
-
- UITableColumn *column = [[UITableColumn alloc]
- initWithTitle:@"Name"
- identifier:@"name"
- width:frame.size.width
- ];
-
- UITable *table = [list_ table];
- [table setSeparatorStyle:1];
- [table addTableColumn:column];
- [table setDelegate:self];
- } return self;
-}
-
-- (void) setDelegate:(id)delegate {
- delegate_ = delegate;
-}
-
-- (void) reloadData {
- pkgSourceList list;
- _assert(list.ReadMainList());
-
- if (sources_ != nil)
- [sources_ release];
-
- sources_ = [[NSMutableArray arrayWithCapacity:16] retain];
- for (pkgSourceList::const_iterator source = list.begin(); source != list.end(); ++source)
- [sources_ addObject:[[[Source alloc] initWithMetaIndex:*source] autorelease]];
-
- [list_ reloadData];
-}
-
-- (NSString *) leftTitle {
- return @"Refresh All";
-}
-
-- (NSString *) rightTitle {
- return @"Edit";
-}
-
-@end
-/* }}} */
-/* Settings View {{{ */
-@interface SettingsView : ResetView {
-}
-
-- (void) dealloc;
-- (void) reloadData;
-@end
-
-@implementation SettingsView
-
-- (void) dealloc {
- [super dealloc];
-}
-
-- (id) initWithFrame:(CGRect)frame database:(Database *)database {
- if ((self = [super initWithFrame:frame]) != nil) {
- database_ = database;
- sources_ = nil;
-
- CGSize navsize = [UINavigationBar defaultSize];
- CGRect navrect = {{0, 0}, navsize};
- CGRect bounds = [self bounds];
-
- navbar_ = [[UINavigationBar alloc] initWithFrame:navrect];
- [self addSubview:navbar_];
-
- [navbar_ setBarStyle:1];
- [navbar_ setDelegate:self];
-
- UINavigationItem *navitem = [[[UINavigationItem alloc] initWithTitle:@"Settings"] autorelease];
- [navbar_ pushNavigationItem:navitem];
- } return self;
-}
-
-- (void) reloadData {
- [self resetView];
-}
-
-@end
-/* }}} */