Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: facebookarchive/three20
...
head fork: drync/three20
Checking mergeability… Don’t worry, you can still create the pull request.
  • 9 commits
  • 20 files changed
  • 0 commit comments
  • 5 contributors
Commits on Apr 11, 2012
Rob Mathews TTTable: fix for a stupid gotcha trying to make the '>' appear in a t…
…able cell

This functionality is implemented in TTTableLinkedItemCell.m, in setObject. Remember, TTTableLinkedItemCell is a subclass of UITableViewCell, and so this is where you actually control what kind of table cell is created. Also remember that TTTableLinkedItemCell is the class that is created when you add a TTTableLinkedItem (or one of it's numerous subclasses) to the table in your TTTableDatasource class.

The rules here are:
- if the TTTableLinkedItem has an accessoryURL, then:
a) accessoryType => UITableViewCellAccessoryDetailDisclosureButton
- if the navigationMode for the URL associated with the TTTableLinkedItem is (TTNavigationModeCreate || TTNavigationModeShare), then:
b)accessoryType => UITableViewCellAccessoryDisclosureIndicator

This is sensible, but what if you set a URL for the TTTableLinkedItem, and it still doesn't appear? Probably it is returning TTNavigationModeNone, which is in turn b/c TTNavigator is not usefully documented.

Here's one way to cause that: use TTURLMap from:toObject:selector:, like this:

TTNavigator* navigator = [TTNavigator navigator];
TTURLMap* map = navigator.URLMap;
[map from:@"drync://tag_custom_location"
	   toObject:self
	   selector:@selector(tag_custom_location)
	   ];

Note: if you use other variants in TTURLMap, like the toViewController/toSharedViewController/toModalViewController variants, then the issue doesn't arise. The problem is exactly if you want to carefully control the creation of the view controller, perhaps because you need to interface to an old-style, non-three20 view.

Ended out patching TTUrlMap as follows to allow TTNavigationMode to be specified, if you care to.
6d5e594
@savanah savanah More flexibility for a TTTableViewDataSource to map item to cell clas…
…ses.

 - The individual item objects can understand their cell representation class, avoiding the need for a subclass of TTTableViewDataSource
 - The constructor of a datasource can specify mapping, obviating need for a custom datasource class or even a tableitem class at all.
b5d83ab
@savanah savanah merged back in old commit Allow custom styles for grouped table headers e609efc
@savanah savanah TTURLRequest read through cache responds now from cache and later fro…
…m network
18f8ac6
@drync drync Silence warnings about TTTableViewDataSource responding to cellClass c045bba
Commits on Apr 13, 2012
@gloriaannehedlund gloriaannehedlund memory management - got rid of all imageNamed: aa83027
Commits on Apr 20, 2012
@gloriaannehedlund gloriaannehedlund replaced obsolete three20 settings / cleaned up code to reduce warnings 5bbc379
Commits on Apr 23, 2012
@gloriaannehedlund gloriaannehedlund rid of all three20 build errors ee0e12f
Commits on Sep 27, 2012
@kemenaran kemenaran Conditionally disable access to private UITouch ivars explicitly
UITouch ivars have been removed of the iOS 6 SDK headers: private API access in UIViewAdditions breaks the build on iOS 6.

The flag to activate the UITouch extensions is now more strict, so that it is not enabled by default in debug builds, and require an explicit setting.
5d5879b
Showing with 691 additions and 51 deletions.
  1. +7 −0 samples/TTCatalog/Classes/AppDelegate.m
  2. +1 −0  samples/TTCatalog/Classes/CatalogController.m
  3. +6 −0 samples/TTCatalog/Classes/TableItemGroupedTestController.h
  4. +52 −0 samples/TTCatalog/Classes/TableItemGroupedTestController.m
  5. +520 −0 samples/TTCatalog/TTCatalog.xcodeproj/project.pbxproj
  6. +1 −0  src/Three20Network/Headers/TTURLRequestCachePolicy.h
  7. +2 −1  src/Three20Network/Sources/TTURLRequestQueue.m
  8. +1 −0  src/Three20Style/Headers/TTDefaultStyleSheet.h
  9. +4 −0 src/Three20Style/Sources/TTDefaultStyleSheet.m
  10. +1 −1  src/Three20Style/Three20Style.xcodeproj/project.pbxproj
  11. +3 −0  src/Three20UI/Headers/TTTableViewDataSource.h
  12. +1 −1  src/Three20UI/Headers/UIViewAdditions.h
  13. +4 −1 src/Three20UI/Sources/TTSearchBar.m
  14. +14 −1 src/Three20UI/Sources/TTTableViewDataSource.m
  15. +53 −42 src/Three20UI/Sources/TTTableViewDelegate.m
  16. +3 −2 src/Three20UI/Sources/UIViewAdditions.m
  17. +1 −1  src/Three20UI/Three20UI.xcodeproj/project.pbxproj
  18. +7 −0 src/Three20UINavigator/Headers/TTURLMap.h
  19. +9 −0 src/Three20UINavigator/Sources/TTURLMap.m
  20. +1 −1  src/extThree20JSON/Source/TTURLJSONResponse.m
View
7 samples/TTCatalog/Classes/AppDelegate.m
@@ -7,6 +7,7 @@
#import "TableImageTestController.h"
#import "YouTubeTestController.h"
#import "TableItemTestController.h"
+#import "TableItemGroupedTestController.h"
#import "TableControlsTestController.h"
#import "TableTestController.h"
#import "TableWithBannerController.h"
@@ -81,6 +82,12 @@ - (void)applicationDidFinishLaunching:(UIApplication*)application {
selector: nil
transition: 0];
+ [map from: @"tt://tableItemGroupedTest"
+ parent: @"tt://catalog"
+ toViewController: [TableItemGroupedTestController class]
+ selector: nil
+ transition: 0];
+
[map from: @"tt://tableControlsTest"
parent: @"tt://catalog"
toViewController: [TableControlsTestController class]
View
1  samples/TTCatalog/Classes/CatalogController.m
@@ -37,6 +37,7 @@ - (void)createModel {
@"Tables",
[TTTableTextItem itemWithText:@"Table Items" URL:@"tt://tableItemTest"],
+ [TTTableTextItem itemWithText:@"Table Items Grouped" URL:@"tt://tableItemGroupedTest"],
[TTTableTextItem itemWithText:@"Table Controls" URL:@"tt://tableControlsTest"],
[TTTableTextItem itemWithText:@"Styled Labels in Table" URL:@"tt://styledTextTableTest"],
[TTTableTextItem itemWithText:@"Web Images in Table" URL:@"tt://imageTest2"],
View
6 samples/TTCatalog/Classes/TableItemGroupedTestController.h
@@ -0,0 +1,6 @@
+#import <Three20/Three20.h>
+#import "TableItemTestController.h"
+
+@interface TableItemGroupedTestController : TableItemTestController
+
+@end
View
52 samples/TTCatalog/Classes/TableItemGroupedTestController.m
@@ -0,0 +1,52 @@
+#import "TableItemGroupedTestController.h"
+#import <Three20UI/UIViewAdditions.h>
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+@interface TableItemGroupedTestStyleSheet : TTDefaultStyleSheet
+@end
+
+@implementation TableItemGroupedTestStyleSheet
+- (TTStyle*)tableHeaderGrouped {
+
+ UIColor* textColor = TTSTYLEVAR(tableTitleTextColor);
+ UIColor* labelColor = [UIColor whiteColor];
+ int fontSize = 18;
+
+ return
+ [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:TT_ROUNDED] next:
+ [TTInsetStyle styleWithInset:UIEdgeInsetsMake(6, 10, 6, 100) next:
+ [TTSolidFillStyle styleWithColor:labelColor next:
+ [TTBoxStyle styleWithPadding:UIEdgeInsetsMake(5, 25, 5, 0) next:
+ [TTTextStyle styleWithFont:[UIFont boldSystemFontOfSize:fontSize]
+ color:textColor
+ textAlignment:UITextAlignmentLeft
+ next:nil]]]]];
+}
+@end
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+@implementation TableItemGroupedTestController
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// NSObject
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
+ if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
+ self.title = @"Table Items Grouped";
+ self.tableViewStyle = UITableViewStyleGrouped;
+
+ // Uncomment this to see how the table cells look against a custom background color
+ //self.tableView.backgroundColor = [UIColor yellowColor];
+
+ [TTStyleSheet setGlobalStyleSheet:[[[TableItemGroupedTestStyleSheet alloc] init] autorelease]];
+ }
+ return self;
+}
+
+- (void)dealloc {
+ [TTStyleSheet setGlobalStyleSheet:nil];
+ [super dealloc];
+}
+
+@end
View
520 samples/TTCatalog/TTCatalog.xcodeproj/project.pbxproj
@@ -13,11 +13,61 @@
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; };
28C286E10D94DF7D0034E888 /* CatalogController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* CatalogController.m */; };
+ 664B27F612846A220008D569 /* TableWithBannerController.m in Sources */ = {isa = PBXBuildFile; fileRef = E46662FD127F91A4001A0F20 /* TableWithBannerController.m */; };
+ 664DFEC112663122004C20C2 /* tableIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = BE6E4DBF0F46A352001CE9B4 /* tableIcon.png */; };
+ 664DFEC212663122004C20C2 /* person.jpg in Resources */ = {isa = PBXBuildFile; fileRef = BECB1CC10F46AE9600AE5B52 /* person.jpg */; };
+ 664DFEC312663122004C20C2 /* Three20.bundle in Resources */ = {isa = PBXBuildFile; fileRef = BEDCFBB30F4FFF820060B7D1 /* Three20.bundle */; };
+ 664DFEC412663122004C20C2 /* smiley.png in Resources */ = {isa = PBXBuildFile; fileRef = BE3188A00F822E2C00E3067D /* smiley.png */; };
+ 664DFEC512663122004C20C2 /* mask.png in Resources */ = {isa = PBXBuildFile; fileRef = BE1289C10F91811E00F65EA2 /* mask.png */; };
+ 664DFEC612663122004C20C2 /* defaultPerson.png in Resources */ = {isa = PBXBuildFile; fileRef = BEA6BA7E101431DA00B83B3A /* defaultPerson.png */; };
+ 664DFEC712663122004C20C2 /* defaultMusic.png in Resources */ = {isa = PBXBuildFile; fileRef = BEA6BAAC101436AC00B83B3A /* defaultMusic.png */; };
+ 664DFEC812663122004C20C2 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 6E94C6AB116D98220012B12C /* Default.png */; };
+ 664DFEC912663122004C20C2 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 6E94C6AC116D98220012B12C /* Icon.png */; };
+ 664DFECB12663122004C20C2 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
+ 664DFECC12663122004C20C2 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AppDelegate.m */; };
+ 664DFECD12663122004C20C2 /* CatalogController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* CatalogController.m */; };
+ 664DFECE12663122004C20C2 /* MockPhotoSource.m in Sources */ = {isa = PBXBuildFile; fileRef = BE80E2490EAEFF6100743358 /* MockPhotoSource.m */; };
+ 664DFECF12663122004C20C2 /* TableImageTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE80E3700EAF0F3000743358 /* TableImageTestController.m */; };
+ 664DFED012663122004C20C2 /* ImageTest1Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = BE80E3A60EAF108500743358 /* ImageTest1Controller.m */; };
+ 664DFED112663122004C20C2 /* ActivityTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BEE38E800EB288BA00189902 /* ActivityTestController.m */; };
+ 664DFED212663122004C20C2 /* PhotoTest1Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = BEE0FDDA0EB2A6850052C05F /* PhotoTest1Controller.m */; };
+ 664DFED312663122004C20C2 /* PhotoTest2Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = BE5F25910EBA5F0400FD59A6 /* PhotoTest2Controller.m */; };
+ 664DFED412663122004C20C2 /* YouTubeTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE8C0F7C0F2018C600EB0E98 /* YouTubeTestController.m */; };
+ 664DFED512663122004C20C2 /* ScrollViewTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BEF6EC360F280CB300CF4096 /* ScrollViewTestController.m */; };
+ 664DFED612663122004C20C2 /* TabBarTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE6E46EB0F4578BA001CE9B4 /* TabBarTestController.m */; };
+ 664DFED712663122004C20C2 /* TableItemTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE6E4AA40F4655A4001CE9B4 /* TableItemTestController.m */; };
+ 664DFED812663122004C20C2 /* MessageTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BEE341B30F480C76008C826E /* MessageTestController.m */; };
+ 664DFED912663122004C20C2 /* SearchTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BEE346BB0F48F15C008C826E /* SearchTestController.m */; };
+ 664DFEDA12663122004C20C2 /* MockDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = BEE348AB0F490F43008C826E /* MockDataSource.m */; };
+ 664DFEDB12663122004C20C2 /* TableTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE69B7580F62874900C02928 /* TableTestController.m */; };
+ 664DFEDC12663122004C20C2 /* StyledTextTableTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BEF1991F0F818E720010D36E /* StyledTextTableTestController.m */; };
+ 664DFEDD12663122004C20C2 /* StyledTextTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BEF199210F818E720010D36E /* StyledTextTestController.m */; };
+ 664DFEDE12663122004C20C2 /* StyleTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE1288300F8973CD00F65EA2 /* StyleTestController.m */; };
+ 664DFEDF12663122004C20C2 /* ButtonTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BEC5EC670F8C307E007622CD /* ButtonTestController.m */; };
+ 664DFEE012663122004C20C2 /* TableControlsTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE20A49B0FF418B2008791F4 /* TableControlsTestController.m */; };
+ 664DFEE112663122004C20C2 /* LauncherViewTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BEC787621040A430005C00CF /* LauncherViewTestController.m */; };
+ 664DFEE212663122004C20C2 /* TableWithShadowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E002566116A6D1A00D1F0CB /* TableWithShadowController.m */; };
+ 664DFEE412663122004C20C2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+ 664DFEE512663122004C20C2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+ 664DFEE612663122004C20C2 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; };
+ 664DFEE712663122004C20C2 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1D84390F8D104B00EC8BB8 /* QuartzCore.framework */; };
+ 664DFF261266315F004C20C2 /* libThree20Core-Xcode3.2.5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 665E992912662FE30025FA42 /* libThree20Core-Xcode3.2.5.a */; };
+ 664DFF271266315F004C20C2 /* libThree20Network-Xcode3.2.5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 665E993612662FE30025FA42 /* libThree20Network-Xcode3.2.5.a */; };
+ 664DFF281266315F004C20C2 /* libThree20Style-Xcode3.2.5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 665E994312662FE30025FA42 /* libThree20Style-Xcode3.2.5.a */; };
+ 664DFF291266315F004C20C2 /* libThree20UICommon-Xcode3.2.5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 665E995012662FE30025FA42 /* libThree20UICommon-Xcode3.2.5.a */; };
+ 664DFF2A1266315F004C20C2 /* libThree20UINavigator-Xcode3.2.5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 665E995D12662FE30025FA42 /* libThree20UINavigator-Xcode3.2.5.a */; };
+ 664DFF2B1266315F004C20C2 /* libThree20UI-Xcode3.2.5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 665E996A12662FE30025FA42 /* libThree20UI-Xcode3.2.5.a */; };
+ 664DFF2C1266315F004C20C2 /* libThree20-Xcode3.2.5.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 665E997712662FE30025FA42 /* libThree20-Xcode3.2.5.a */; };
666E183012944D23001C1D97 /* SplitCatalogController.m in Sources */ = {isa = PBXBuildFile; fileRef = 666E182F12944D23001C1D97 /* SplitCatalogController.m */; };
+ 666E183112944D23001C1D97 /* SplitCatalogController.m in Sources */ = {isa = PBXBuildFile; fileRef = 666E182F12944D23001C1D97 /* SplitCatalogController.m */; };
6675F5F412945622008DE0A6 /* Default-Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 6675F5F012945622008DE0A6 /* Default-Landscape.png */; };
6675F5F512945622008DE0A6 /* Default-Portrait.png in Resources */ = {isa = PBXBuildFile; fileRef = 6675F5F112945622008DE0A6 /* Default-Portrait.png */; };
6675F5F612945622008DE0A6 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6675F5F212945622008DE0A6 /* Default@2x.png */; };
6675F5F712945622008DE0A6 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6675F5F312945622008DE0A6 /* Icon@2x.png */; };
+ 6675F5F812945622008DE0A6 /* Default-Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 6675F5F012945622008DE0A6 /* Default-Landscape.png */; };
+ 6675F5F912945622008DE0A6 /* Default-Portrait.png in Resources */ = {isa = PBXBuildFile; fileRef = 6675F5F112945622008DE0A6 /* Default-Portrait.png */; };
+ 6675F5FA12945622008DE0A6 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6675F5F212945622008DE0A6 /* Default@2x.png */; };
+ 6675F5FB12945622008DE0A6 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6675F5F312945622008DE0A6 /* Icon@2x.png */; };
6E002567116A6D1A00D1F0CB /* TableWithShadowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E002566116A6D1A00D1F0CB /* TableWithShadowController.m */; };
6E3794F511B9B6DB0011C497 /* libThree20Core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E3794D411B9B6D70011C497 /* libThree20Core.a */; };
6E3794F611B9B6DC0011C497 /* libThree20Network.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E3794DA11B9B6D70011C497 /* libThree20Network.a */; };
@@ -30,6 +80,8 @@
6E94C6AE116D98220012B12C /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 6E94C6AC116D98220012B12C /* Icon.png */; };
7000C4C0130CCAE3006D7ADE /* DownloadTestModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 7000C4BE130CCAE3006D7ADE /* DownloadTestModel.m */; };
7000C4C1130CCAE3006D7ADE /* DownloadProgressTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7000C4BF130CCAE3006D7ADE /* DownloadProgressTestController.m */; };
+ A96808E8131A91FB00EB3DAF /* TableItemGroupedTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = A96808E7131A91FB00EB3DAF /* TableItemGroupedTestController.m */; };
+ A96808E9131A91FB00EB3DAF /* TableItemGroupedTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = A96808E7131A91FB00EB3DAF /* TableItemGroupedTestController.m */; };
BE1288310F8973CD00F65EA2 /* StyleTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = BE1288300F8973CD00F65EA2 /* StyleTestController.m */; };
BE1289C20F91811E00F65EA2 /* mask.png in Resources */ = {isa = PBXBuildFile; fileRef = BE1289C10F91811E00F65EA2 /* mask.png */; };
BE1D843A0F8D104B00EC8BB8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1D84390F8D104B00EC8BB8 /* QuartzCore.framework */; };
@@ -63,6 +115,153 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
+ 664DFF181266314B004C20C2 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794C211B9B6D70011C497 /* Three20Network.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 662D81C912630516005851C2;
+ remoteInfo = "Three20Network-Xcode3.2.5";
+ };
+ 664DFF1A1266314B004C20C2 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E7F9752118E37BA00443B46 /* Three20.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 665A55C6126521740032D0BE;
+ remoteInfo = "Three20-Xcode3.2.5";
+ };
+ 664DFF1C1266314B004C20C2 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794CB11B9B6D70011C497 /* Three20UINavigator.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 665A541D1264DAF70032D0BE;
+ remoteInfo = "Three20UINavigator-Xcode3.2.5";
+ };
+ 664DFF1E1266314B004C20C2 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794C811B9B6D70011C497 /* Three20UICommon.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 665A53601264D54B0032D0BE;
+ remoteInfo = "Three20UICommon-Xcode3.2.5";
+ };
+ 664DFF201266314B004C20C2 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794C511B9B6D70011C497 /* Three20Style.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 66C16B6012639E2700A7825A;
+ remoteInfo = "Three20Style-Xcode3.2.5";
+ };
+ 664DFF221266314B004C20C2 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794CE11B9B6D70011C497 /* Three20UI.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 66FC2AB51264E3A400F56B19;
+ remoteInfo = "Three20UI-Xcode3.2.5";
+ };
+ 664DFF241266314B004C20C2 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794BF11B9B6D70011C497 /* Three20Core.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 6650CA791262F6E2003FF804;
+ remoteInfo = "Three20Core-Xcode3.2.5";
+ };
+ 665E992812662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794BF11B9B6D70011C497 /* Three20Core.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 6650CAA21262F6E2003FF804;
+ remoteInfo = "Three20Core-Xcode3.2.5";
+ };
+ 665E992C12662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794BF11B9B6D70011C497 /* Three20Core.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 664961641262EE5000C2C80E;
+ remoteInfo = "Three20CoreUnitTests-Xcode3.2.5";
+ };
+ 665E993512662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794C211B9B6D70011C497 /* Three20Network.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 662D81EF12630516005851C2;
+ remoteInfo = "Three20Network-Xcode3.2.5";
+ };
+ 665E993912662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794C211B9B6D70011C497 /* Three20Network.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 662D81B2126304EB005851C2;
+ remoteInfo = "Three20NetworkUnitTests-Xcode3.2.5";
+ };
+ 665E994212662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794C511B9B6D70011C497 /* Three20Style.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 66C16BE912639E2700A7825A;
+ remoteInfo = "Three20Style-Xcode3.2.5";
+ };
+ 665E994612662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794C511B9B6D70011C497 /* Three20Style.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 66C16C0112639E4500A7825A;
+ remoteInfo = "Three20StyleUnitTests-Xcode3.2.5";
+ };
+ 665E994F12662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794C811B9B6D70011C497 /* Three20UICommon.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 665A53761264D54B0032D0BE;
+ remoteInfo = "Three20UICommon-Xcode3.2.5";
+ };
+ 665E995312662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794C811B9B6D70011C497 /* Three20UICommon.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 665A53891264D54B0032D0BE;
+ remoteInfo = "Three20UICommonUnitTests-Xcode3.2.5";
+ };
+ 665E995C12662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794CB11B9B6D70011C497 /* Three20UINavigator.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 665A54521264DAF70032D0BE;
+ remoteInfo = "Three20UINavigator-Xcode3.2.5";
+ };
+ 665E996012662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794CB11B9B6D70011C497 /* Three20UINavigator.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 665A54681264DAF70032D0BE;
+ remoteInfo = "Three20UINavigatorUnitTests-Xcode3.2.5";
+ };
+ 665E996912662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794CE11B9B6D70011C497 /* Three20UI.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 66FC2BC81264E3A400F56B19;
+ remoteInfo = "Three20UI-Xcode3.2.5";
+ };
+ 665E996D12662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E3794CE11B9B6D70011C497 /* Three20UI.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 66FC2BE61264E3A500F56B19;
+ remoteInfo = "Three20UIUnitTests-Xcode3.2.5";
+ };
+ 665E997612662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E7F9752118E37BA00443B46 /* Three20.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 665A55DE126521740032D0BE;
+ remoteInfo = "Three20-Xcode3.2.5";
+ };
+ 665E997A12662FE30025FA42 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6E7F9752118E37BA00443B46 /* Three20.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 665A55FB126521740032D0BE;
+ remoteInfo = "Three20UnitTests-Xcode3.2.5";
+ };
6E3794D311B9B6D70011C497 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6E3794BF11B9B6D70011C497 /* Three20Core.xcodeproj */;
@@ -222,6 +421,7 @@
28C286DF0D94DF7D0034E888 /* CatalogController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CatalogController.h; sourceTree = "<group>"; };
28C286E00D94DF7D0034E888 /* CatalogController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CatalogController.m; sourceTree = "<group>"; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+ 664DFEF212663122004C20C2 /* TTCatalog-v3.2.5.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "TTCatalog-v3.2.5.app"; sourceTree = BUILT_PRODUCTS_DIR; };
665E998712662FFA0025FA42 /* TTCatalog-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "TTCatalog-Info.plist"; sourceTree = "<group>"; };
666E182E12944D23001C1D97 /* SplitCatalogController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SplitCatalogController.h; sourceTree = "<group>"; };
666E182F12944D23001C1D97 /* SplitCatalogController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SplitCatalogController.m; sourceTree = "<group>"; };
@@ -249,6 +449,8 @@
7000C4BF130CCAE3006D7ADE /* DownloadProgressTestController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DownloadProgressTestController.m; sourceTree = "<group>"; };
7000C4C2130CCB0F006D7ADE /* DownloadTestModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DownloadTestModel.h; sourceTree = "<group>"; };
7000C4C3130CCB0F006D7ADE /* DownloadProgressTestController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DownloadProgressTestController.h; sourceTree = "<group>"; };
+ A96808E6131A91FB00EB3DAF /* TableItemGroupedTestController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableItemGroupedTestController.h; sourceTree = "<group>"; };
+ A96808E7131A91FB00EB3DAF /* TableItemGroupedTestController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableItemGroupedTestController.m; sourceTree = "<group>"; };
BE12882F0F8973CD00F65EA2 /* StyleTestController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleTestController.h; sourceTree = "<group>"; };
BE1288300F8973CD00F65EA2 /* StyleTestController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StyleTestController.m; sourceTree = "<group>"; };
BE1289C10F91811E00F65EA2 /* mask.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mask.png; sourceTree = "<group>"; };
@@ -322,6 +524,24 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 664DFEE312663122004C20C2 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 664DFF261266315F004C20C2 /* libThree20Core-Xcode3.2.5.a in Frameworks */,
+ 664DFF271266315F004C20C2 /* libThree20Network-Xcode3.2.5.a in Frameworks */,
+ 664DFF281266315F004C20C2 /* libThree20Style-Xcode3.2.5.a in Frameworks */,
+ 664DFF291266315F004C20C2 /* libThree20UICommon-Xcode3.2.5.a in Frameworks */,
+ 664DFF2A1266315F004C20C2 /* libThree20UINavigator-Xcode3.2.5.a in Frameworks */,
+ 664DFF2B1266315F004C20C2 /* libThree20UI-Xcode3.2.5.a in Frameworks */,
+ 664DFF2C1266315F004C20C2 /* libThree20-Xcode3.2.5.a in Frameworks */,
+ 664DFEE412663122004C20C2 /* Foundation.framework in Frameworks */,
+ 664DFEE512663122004C20C2 /* UIKit.framework in Frameworks */,
+ 664DFEE612663122004C20C2 /* CoreGraphics.framework in Frameworks */,
+ 664DFEE712663122004C20C2 /* QuartzCore.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -349,6 +569,7 @@
isa = PBXGroup;
children = (
1D6058910D05DD3D006BFB54 /* TTCatalog.app */,
+ 664DFEF212663122004C20C2 /* TTCatalog-v3.2.5.app */,
);
name = Products;
sourceTree = "<group>";
@@ -421,7 +642,9 @@
isa = PBXGroup;
children = (
6E3794D411B9B6D70011C497 /* libThree20Core.a */,
+ 665E992912662FE30025FA42 /* libThree20Core-Xcode3.2.5.a */,
6E3794D611B9B6D70011C497 /* CoreUnitTests.octest */,
+ 665E992D12662FE30025FA42 /* CoreUnitTests-Xcode3.2.5.octest */,
);
name = Products;
sourceTree = "<group>";
@@ -430,7 +653,9 @@
isa = PBXGroup;
children = (
6E3794DA11B9B6D70011C497 /* libThree20Network.a */,
+ 665E993612662FE30025FA42 /* libThree20Network-Xcode3.2.5.a */,
6E3794DC11B9B6D70011C497 /* NetworkUnitTests.octest */,
+ 665E993A12662FE30025FA42 /* NetworkUnitTests-Xcode3.2.5.octest */,
);
name = Products;
sourceTree = "<group>";
@@ -439,7 +664,9 @@
isa = PBXGroup;
children = (
6E3794E011B9B6D70011C497 /* libThree20Style.a */,
+ 665E994312662FE30025FA42 /* libThree20Style-Xcode3.2.5.a */,
6E3794E211B9B6D70011C497 /* StyleUnitTests.octest */,
+ 665E994712662FE30025FA42 /* StyleUnitTests-Xcode3.2.5.octest */,
);
name = Products;
sourceTree = "<group>";
@@ -448,7 +675,9 @@
isa = PBXGroup;
children = (
6E3794E611B9B6D70011C497 /* libThree20UICommon.a */,
+ 665E995012662FE30025FA42 /* libThree20UICommon-Xcode3.2.5.a */,
6E3794E811B9B6D70011C497 /* UICommonUnitTests.octest */,
+ 665E995412662FE30025FA42 /* UICommonUnitTests-Xcode3.2.5.octest */,
);
name = Products;
sourceTree = "<group>";
@@ -457,7 +686,9 @@
isa = PBXGroup;
children = (
6E3794EC11B9B6D70011C497 /* libThree20UINavigator.a */,
+ 665E995D12662FE30025FA42 /* libThree20UINavigator-Xcode3.2.5.a */,
6E3794EE11B9B6D70011C497 /* UINavigatorUnitTests.octest */,
+ 665E996112662FE30025FA42 /* UINavigatorUnitTests-Xcode3.2.5.octest */,
);
name = Products;
sourceTree = "<group>";
@@ -466,7 +697,9 @@
isa = PBXGroup;
children = (
6E3794F211B9B6D70011C497 /* libThree20UI.a */,
+ 665E996A12662FE30025FA42 /* libThree20UI-Xcode3.2.5.a */,
6E3794F411B9B6D70011C497 /* UIUnitTests.octest */,
+ 665E996E12662FE30025FA42 /* UIUnitTests-Xcode3.2.5.octest */,
);
name = Products;
sourceTree = "<group>";
@@ -489,7 +722,9 @@
isa = PBXGroup;
children = (
6E7F977E118E37BB00443B46 /* libThree20.a */,
+ 665E997712662FE30025FA42 /* libThree20-Xcode3.2.5.a */,
6E7F9780118E37BB00443B46 /* Three20UnitTests.octest */,
+ 665E997B12662FE30025FA42 /* Three20UnitTests-Xcode3.2.5.octest */,
);
name = Products;
sourceTree = "<group>";
@@ -524,6 +759,15 @@
name = "Download Progress";
sourceTree = "<group>";
};
+ A96808E5131A91C400EB3DAF /* Table Items Grouped */ = {
+ isa = PBXGroup;
+ children = (
+ A96808E6131A91FB00EB3DAF /* TableItemGroupedTestController.h */,
+ A96808E7131A91FB00EB3DAF /* TableItemGroupedTestController.m */,
+ );
+ name = "Table Items Grouped";
+ sourceTree = "<group>";
+ };
BEC7875C1040A405005C00CF /* Launcher */ = {
isa = PBXGroup;
children = (
@@ -725,6 +969,7 @@
isa = PBXGroup;
children = (
EA108177101B3A630098AAC2 /* Table Items */,
+ A96808E5131A91C400EB3DAF /* Table Items Grouped */,
EA108175101B3A5C0098AAC2 /* Table Controls */,
EA108172101B3A4A0098AAC2 /* Styled Labels in Table */,
EA108169101B3A3A0098AAC2 /* Web Images in Table */,
@@ -798,6 +1043,30 @@
productReference = 1D6058910D05DD3D006BFB54 /* TTCatalog.app */;
productType = "com.apple.product-type.application";
};
+ 664DFEB112663122004C20C2 /* TTCatalog-Xcode3.2.5 */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 664DFEEF12663122004C20C2 /* Build configuration list for PBXNativeTarget "TTCatalog-Xcode3.2.5" */;
+ buildPhases = (
+ 664DFEC012663122004C20C2 /* Resources */,
+ 664DFECA12663122004C20C2 /* Sources */,
+ 664DFEE312663122004C20C2 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 664DFF191266314B004C20C2 /* PBXTargetDependency */,
+ 664DFF1B1266314B004C20C2 /* PBXTargetDependency */,
+ 664DFF1D1266314B004C20C2 /* PBXTargetDependency */,
+ 664DFF1F1266314B004C20C2 /* PBXTargetDependency */,
+ 664DFF211266314B004C20C2 /* PBXTargetDependency */,
+ 664DFF231266314B004C20C2 /* PBXTargetDependency */,
+ 664DFF251266314B004C20C2 /* PBXTargetDependency */,
+ );
+ name = "TTCatalog-Xcode3.2.5";
+ productName = PhotoBrowser;
+ productReference = 664DFEF212663122004C20C2 /* TTCatalog-v3.2.5.app */;
+ productType = "com.apple.product-type.application";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -853,11 +1122,110 @@
projectRoot = "";
targets = (
1D6058900D05DD3D006BFB54 /* TTCatalog */,
+ 664DFEB112663122004C20C2 /* TTCatalog-Xcode3.2.5 */,
);
};
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
+ 665E992912662FE30025FA42 /* libThree20Core-Xcode3.2.5.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = "libThree20Core-Xcode3.2.5.a";
+ remoteRef = 665E992812662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E992D12662FE30025FA42 /* CoreUnitTests-Xcode3.2.5.octest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "CoreUnitTests-Xcode3.2.5.octest";
+ remoteRef = 665E992C12662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E993612662FE30025FA42 /* libThree20Network-Xcode3.2.5.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = "libThree20Network-Xcode3.2.5.a";
+ remoteRef = 665E993512662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E993A12662FE30025FA42 /* NetworkUnitTests-Xcode3.2.5.octest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "NetworkUnitTests-Xcode3.2.5.octest";
+ remoteRef = 665E993912662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E994312662FE30025FA42 /* libThree20Style-Xcode3.2.5.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = "libThree20Style-Xcode3.2.5.a";
+ remoteRef = 665E994212662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E994712662FE30025FA42 /* StyleUnitTests-Xcode3.2.5.octest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "StyleUnitTests-Xcode3.2.5.octest";
+ remoteRef = 665E994612662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E995012662FE30025FA42 /* libThree20UICommon-Xcode3.2.5.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = "libThree20UICommon-Xcode3.2.5.a";
+ remoteRef = 665E994F12662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E995412662FE30025FA42 /* UICommonUnitTests-Xcode3.2.5.octest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "UICommonUnitTests-Xcode3.2.5.octest";
+ remoteRef = 665E995312662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E995D12662FE30025FA42 /* libThree20UINavigator-Xcode3.2.5.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = "libThree20UINavigator-Xcode3.2.5.a";
+ remoteRef = 665E995C12662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E996112662FE30025FA42 /* UINavigatorUnitTests-Xcode3.2.5.octest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "UINavigatorUnitTests-Xcode3.2.5.octest";
+ remoteRef = 665E996012662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E996A12662FE30025FA42 /* libThree20UI-Xcode3.2.5.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = "libThree20UI-Xcode3.2.5.a";
+ remoteRef = 665E996912662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E996E12662FE30025FA42 /* UIUnitTests-Xcode3.2.5.octest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "UIUnitTests-Xcode3.2.5.octest";
+ remoteRef = 665E996D12662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E997712662FE30025FA42 /* libThree20-Xcode3.2.5.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = "libThree20-Xcode3.2.5.a";
+ remoteRef = 665E997612662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 665E997B12662FE30025FA42 /* Three20UnitTests-Xcode3.2.5.octest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "Three20UnitTests-Xcode3.2.5.octest";
+ remoteRef = 665E997A12662FE30025FA42 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
6E3794D411B9B6D70011C497 /* libThree20Core.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
@@ -979,6 +1347,26 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 664DFEC012663122004C20C2 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 664DFEC112663122004C20C2 /* tableIcon.png in Resources */,
+ 664DFEC212663122004C20C2 /* person.jpg in Resources */,
+ 664DFEC312663122004C20C2 /* Three20.bundle in Resources */,
+ 664DFEC412663122004C20C2 /* smiley.png in Resources */,
+ 664DFEC512663122004C20C2 /* mask.png in Resources */,
+ 664DFEC612663122004C20C2 /* defaultPerson.png in Resources */,
+ 664DFEC712663122004C20C2 /* defaultMusic.png in Resources */,
+ 664DFEC812663122004C20C2 /* Default.png in Resources */,
+ 664DFEC912663122004C20C2 /* Icon.png in Resources */,
+ 6675F5F812945622008DE0A6 /* Default-Landscape.png in Resources */,
+ 6675F5F912945622008DE0A6 /* Default-Portrait.png in Resources */,
+ 6675F5FA12945622008DE0A6 /* Default@2x.png in Resources */,
+ 6675F5FB12945622008DE0A6 /* Icon@2x.png in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -1015,12 +1403,82 @@
E4D1D1D61306D2670090AE0C /* TableDragRefreshController.m in Sources */,
7000C4C0130CCAE3006D7ADE /* DownloadTestModel.m in Sources */,
7000C4C1130CCAE3006D7ADE /* DownloadProgressTestController.m in Sources */,
+ A96808E8131A91FB00EB3DAF /* TableItemGroupedTestController.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 664DFECA12663122004C20C2 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 664DFECB12663122004C20C2 /* main.m in Sources */,
+ 664DFECC12663122004C20C2 /* AppDelegate.m in Sources */,
+ 664DFECD12663122004C20C2 /* CatalogController.m in Sources */,
+ 664DFECE12663122004C20C2 /* MockPhotoSource.m in Sources */,
+ 664DFECF12663122004C20C2 /* TableImageTestController.m in Sources */,
+ 664DFED012663122004C20C2 /* ImageTest1Controller.m in Sources */,
+ 664DFED112663122004C20C2 /* ActivityTestController.m in Sources */,
+ 664DFED212663122004C20C2 /* PhotoTest1Controller.m in Sources */,
+ 664DFED312663122004C20C2 /* PhotoTest2Controller.m in Sources */,
+ 664DFED412663122004C20C2 /* YouTubeTestController.m in Sources */,
+ 664DFED512663122004C20C2 /* ScrollViewTestController.m in Sources */,
+ 664DFED612663122004C20C2 /* TabBarTestController.m in Sources */,
+ 664DFED712663122004C20C2 /* TableItemTestController.m in Sources */,
+ 664DFED812663122004C20C2 /* MessageTestController.m in Sources */,
+ 664DFED912663122004C20C2 /* SearchTestController.m in Sources */,
+ 664DFEDA12663122004C20C2 /* MockDataSource.m in Sources */,
+ 664DFEDB12663122004C20C2 /* TableTestController.m in Sources */,
+ 664DFEDC12663122004C20C2 /* StyledTextTableTestController.m in Sources */,
+ 664DFEDD12663122004C20C2 /* StyledTextTestController.m in Sources */,
+ 664DFEDE12663122004C20C2 /* StyleTestController.m in Sources */,
+ 664DFEDF12663122004C20C2 /* ButtonTestController.m in Sources */,
+ 664DFEE012663122004C20C2 /* TableControlsTestController.m in Sources */,
+ 664DFEE112663122004C20C2 /* LauncherViewTestController.m in Sources */,
+ 664DFEE212663122004C20C2 /* TableWithShadowController.m in Sources */,
+ 664B27F612846A220008D569 /* TableWithBannerController.m in Sources */,
+ 666E183112944D23001C1D97 /* SplitCatalogController.m in Sources */,
+ A96808E9131A91FB00EB3DAF /* TableItemGroupedTestController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
+ 664DFF191266314B004C20C2 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "Three20Network-Xcode3.2.5";
+ targetProxy = 664DFF181266314B004C20C2 /* PBXContainerItemProxy */;
+ };
+ 664DFF1B1266314B004C20C2 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "Three20-Xcode3.2.5";
+ targetProxy = 664DFF1A1266314B004C20C2 /* PBXContainerItemProxy */;
+ };
+ 664DFF1D1266314B004C20C2 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "Three20UINavigator-Xcode3.2.5";
+ targetProxy = 664DFF1C1266314B004C20C2 /* PBXContainerItemProxy */;
+ };
+ 664DFF1F1266314B004C20C2 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "Three20UICommon-Xcode3.2.5";
+ targetProxy = 664DFF1E1266314B004C20C2 /* PBXContainerItemProxy */;
+ };
+ 664DFF211266314B004C20C2 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "Three20Style-Xcode3.2.5";
+ targetProxy = 664DFF201266314B004C20C2 /* PBXContainerItemProxy */;
+ };
+ 664DFF231266314B004C20C2 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "Three20UI-Xcode3.2.5";
+ targetProxy = 664DFF221266314B004C20C2 /* PBXContainerItemProxy */;
+ };
+ 664DFF251266314B004C20C2 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "Three20Core-Xcode3.2.5";
+ targetProxy = 664DFF241266314B004C20C2 /* PBXContainerItemProxy */;
+ };
6E37950011B9B6EE0011C497 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = Three20UI;
@@ -1090,6 +1548,57 @@
};
name = Release;
};
+ 664DFEF012663122004C20C2 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 6E7F9960118E3A6000443B46 /* App.xcconfig */;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ BUILD_STYLE = Debug;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
+ OTHER_LDFLAGS = (
+ "$(THREE20CORE325_LIB)",
+ "$(THREE20NETWORK325_LIB)",
+ "$(THREE20STYLE325_LIB)",
+ "$(THREE20UICOMMON325_LIB)",
+ "$(THREE20UINAVIGATOR325_LIB)",
+ "$(THREE20UI325_LIB)",
+ "$(THREE20325_LIB)",
+ );
+ PRODUCT_NAME = "$(BASE_PRODUCT_NAME)-v3.2.5";
+ "PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 664DFEF112663122004C20C2 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 6E7F9960118E3A6000443B46 /* App.xcconfig */;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ BUILD_STYLE = Release;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = YES;
+ OTHER_LDFLAGS = (
+ "$(THREE20CORE325_LIB)",
+ "$(THREE20NETWORK325_LIB)",
+ "$(THREE20STYLE325_LIB)",
+ "$(THREE20UICOMMON325_LIB)",
+ "$(THREE20UINAVIGATOR325_LIB)",
+ "$(THREE20UI325_LIB)",
+ "$(THREE20325_LIB)",
+ );
+ PRODUCT_NAME = "$(BASE_PRODUCT_NAME)-v3.2.5";
+ "PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 6E7F9961118E3A6000443B46 /* Project.xcconfig */;
@@ -1101,6 +1610,7 @@
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
+ PREBINDING = NO;
SDKROOT = iphoneos;
};
name = Debug;
@@ -1115,6 +1625,7 @@
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
SDKROOT = iphoneos;
};
name = Release;
@@ -1131,6 +1642,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 664DFEEF12663122004C20C2 /* Build configuration list for PBXNativeTarget "TTCatalog-Xcode3.2.5" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 664DFEF012663122004C20C2 /* Debug */,
+ 664DFEF112663122004C20C2 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "TTCatalog" */ = {
isa = XCConfigurationList;
buildConfigurations = (
View
1  src/Three20Network/Headers/TTURLRequestCachePolicy.h
@@ -26,6 +26,7 @@ typedef enum {
TTURLRequestCachePolicyNetwork = 4,
TTURLRequestCachePolicyNoCache = 8,
TTURLRequestCachePolicyEtag = 16 | TTURLRequestCachePolicyDisk,
+ TTURLRequestCachePolicyReadThrough = 32,
TTURLRequestCachePolicyLocal
= (TTURLRequestCachePolicyMemory | TTURLRequestCachePolicyDisk),
TTURLRequestCachePolicyDefault
View
3  src/Three20Network/Sources/TTURLRequestQueue.m
@@ -345,7 +345,8 @@ - (void)setSuspended:(BOOL)isSuspended {
///////////////////////////////////////////////////////////////////////////////////////////////////
- (BOOL)sendRequest:(TTURLRequest*)request {
- if ([self loadRequestFromCache:request]) {
+ BOOL readThroughCache = IS_MASK_SET(request.cachePolicy, TTURLRequestCachePolicyReadThrough);
+ if ([self loadRequestFromCache:request] && !readThroughCache) {
return YES;
}
View
1  src/Three20Style/Headers/TTDefaultStyleSheet.h
@@ -46,6 +46,7 @@
@property (nonatomic, readonly) UIColor* tableHeaderShadowColor;
@property (nonatomic, readonly) CGSize tableHeaderShadowOffset;
@property (nonatomic, readonly) UIColor* tableHeaderTintColor;
+@property (nonatomic, readonly) TTStyle* tableHeaderGrouped;
// Photo Captions
@property (nonatomic, readonly) UIColor* photoCaptionTextColor;
View
4 src/Three20Style/Sources/TTDefaultStyleSheet.m
@@ -898,6 +898,10 @@ - (UIColor*)tableHeaderTintColor {
return nil;
}
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (TTStyle*)tableHeaderGrouped {
+ return nil;
+}
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
View
2  src/Three20Style/Three20Style.xcodeproj/project.pbxproj
@@ -858,7 +858,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
- LastUpgradeCheck = 0420;
+ LastUpgradeCheck = 0430;
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Three20Style" */;
compatibilityVersion = "Xcode 3.2";
View
3  src/Three20UI/Headers/TTTableViewDataSource.h
@@ -30,6 +30,8 @@
- (id)tableView:(UITableView*)tableView objectForRowAtIndexPath:(NSIndexPath*)indexPath;
+- (void)setCellClass:(NSString*)cellClass forItemClass:(NSString*)itemClass;
+
- (Class)tableView:(UITableView*)tableView cellClassForObject:(id)object;
- (NSString*)tableView:(UITableView*)tableView labelForObject:(id)object;
@@ -85,6 +87,7 @@
@interface TTTableViewDataSource : NSObject <TTTableViewDataSource> {
id<TTModel> _model;
+ NSMutableDictionary * _itemCellClassMapping;
}
@end
View
2  src/Three20UI/Headers/UIViewAdditions.h
@@ -138,7 +138,7 @@
/**
* WARNING: This depends on undocumented APIs and may be fragile. For testing only.
*/
-#ifdef DEBUG
+#ifdef DEBUG_TOUCHES
- (void)simulateTapAtPoint:(CGPoint)location;
#endif
View
5 src/Three20UI/Sources/TTSearchBar.m
@@ -322,7 +322,10 @@ - (void)setShowsSearchIcon:(BOOL)showsSearchIcon {
if (_showsSearchIcon) {
UIImageView* iconView = [[[UIImageView alloc] initWithImage:
- [UIImage imageNamed:@"Three20.bundle/images/searchIcon.png"]] autorelease];
+ [UIImage imageWithContentsOfFile:
+ [[[NSBundle mainBundle] bundlePath]
+ stringByAppendingString:@"/Three20.bundle/images/searchIcon.png"]]]
+ autorelease];
[iconView sizeToFit];
iconView.contentMode = UIViewContentModeLeft;
iconView.frame = CGRectInset(iconView.frame, -floor(kMarginX/2), 0);
View
15 src/Three20UI/Sources/TTTableViewDataSource.m
@@ -71,6 +71,7 @@ @implementation TTTableViewDataSource
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)dealloc {
TT_RELEASE_SAFELY(_model);
+ TT_RELEASE_SAFELY(_itemCellClassMapping);
[super dealloc];
}
@@ -247,10 +248,22 @@ - (id)tableView:(UITableView*)tableView objectForRowAtIndexPath:(NSIndexPath*)in
return nil;
}
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)setCellClass:(NSString*)cellClass forItemClass:(NSString*)itemClass {
+ if (!_itemCellClassMapping) {
+ _itemCellClassMapping = [[NSMutableDictionary alloc] init];
+ }
+ [_itemCellClassMapping setObject:cellClass forKey:itemClass];
+}
///////////////////////////////////////////////////////////////////////////////////////////////////
- (Class)tableView:(UITableView*)tableView cellClassForObject:(id)object {
- if ([object isKindOfClass:[TTTableItem class]]) {
+ if ([object respondsToSelector:@selector(cellClass)])
+ return [object performSelector:@selector(cellClass)];
+ else if (_itemCellClassMapping && [_itemCellClassMapping objectForKey:NSStringFromClass([object class])]) {
+ return NSClassFromString([_itemCellClassMapping objectForKey:NSStringFromClass([object class])]);
+ }
+ else if ([object isKindOfClass:[TTTableItem class]]) {
if ([object isKindOfClass:[TTTableMoreButton class]]) {
return [TTTableMoreButtonCell class];
View
95 src/Three20UI/Sources/TTTableViewDelegate.m
@@ -23,6 +23,7 @@
#import "Three20UI/TTTableHeaderView.h"
#import "Three20UI/TTTableView.h"
#import "Three20UI/TTStyledTextLabel.h"
+#import "Three20UI/TTLabel.h"
// - Table Items
#import "Three20UI/TTTableItem.h"
@@ -36,6 +37,8 @@
// Style
#import "Three20Style/TTGlobalStyle.h"
#import "Three20Style/TTDefaultStyleSheet.h"
+#import "Three20Style/TTStyleContext.h"
+#import "Three20Style/TTStyle.h"
// Network
#import "Three20Network/TTURLRequestQueue.h"
@@ -92,56 +95,64 @@ - (void)dealloc {
* (i.e. not a grouped one), then we create header view objects for each header and handle the
* drawing ourselves.
*/
-- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
- if (tableView.style == UITableViewStylePlain && TTSTYLEVAR(tableHeaderTintColor)) {
- if ([tableView.dataSource respondsToSelector:@selector(tableView:titleForHeaderInSection:)]) {
- NSString* title = [tableView.dataSource tableView:tableView titleForHeaderInSection:section];
- if (title.length > 0) {
- TTTableHeaderView* header = [_headers objectForKey:title];
-
- // If retrieved from cache, prepare for reuse here.
- // We reset the the opacity to 1 because UITableView might set this property to 0 after
- // removing it.
- // TODO (jverkoey Feb 26, 2011): When does this happen, exactly?
- if (nil != header) {
- header.alpha = 1;
-
- } else {
- if (nil == _headers) {
- _headers = [[NSMutableDictionary alloc] init];
- }
- header = [[[TTTableHeaderView alloc] initWithTitle:title] autorelease];
- [_headers setObject:header forKey:title];
- }
- return header;
- }
+- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
+ TTView * header = (TTView*)[self tableView:tableView viewForHeaderInSection:section];
+ if (header) {
+ //! Is it a bug in -TTView sizeThatFits: that it ignores the size argument? -- sia 20110226
+ // return [header sizeThatFits:CGSizeMake(320,[tableView sectionHeaderHeight])].height;
+ TTStyleContext* context = [[[TTStyleContext alloc] init] autorelease];
+ context.delegate = header;
+ context.font = nil;
+ CGSize size = [header.style addToSize:CGSizeMake(0, [tableView sectionHeaderHeight])
+ context:context];
+ return size.height;
+ }
+ else {
+ CGFloat height = [tableView sectionHeaderHeight];
+ //! For some reason, [tableView sectionHeaderHeight] returns (clearly wrong) 10
+ //for grouped tables. Bug? Work around -- sic 20110227
+ if ([tableView style] == UITableViewStyleGrouped) {
+ height = 36;
}
+ return height;
}
- return nil;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
-- (CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section {
+- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
if ([tableView.dataSource respondsToSelector:@selector(tableView:titleForHeaderInSection:)]) {
NSString* title = [tableView.dataSource tableView:tableView titleForHeaderInSection:section];
- if (![title length]) {
- return kEmptyHeaderHeight;
- }
+ if (title.length > 0) {
+ TTView* header = [_headers objectForKey:title];
+ if (header) {
+ return header;
+ }
+
+ if (nil == _headers) {
+ _headers = [[NSMutableDictionary alloc] init];
+ }
- if (tableView.style == UITableViewStylePlain) {
- return kSectionHeaderHeight;
+ if (tableView.style == UITableViewStylePlain && TTSTYLEVAR(tableHeaderTintColor)) {
+ header = [[[TTTableHeaderView alloc] initWithTitle:title] autorelease];
+ }
+ else if (tableView.style == UITableViewStyleGrouped && TTSTYLEVAR(tableHeaderGrouped)) {
+ TTLabel * label = [[[TTLabel alloc] initWithText:title] autorelease];
+ label.style = TTSTYLE(tableHeaderGrouped);
+ label.backgroundColor = [UIColor clearColor];
+ header = label;
+ [_headers setObject:header forKey:[NSNumber numberWithInteger:section]];
+ }
- } else {
- if (section == kFirstTableSection) {
- return kGroupedSectionFirstHeaderHeight;
+ if (header) {
+ [_headers setObject:header forKey:title];
+ return header;
}
- return kGroupedSectionHeaderHeight;
}
-
}
- return kEmptyHeaderHeight;
+ return nil;
}
+
///////////////////////////////////////////////////////////////////////////////////////////////////
/**
* When the user taps a cell item, we check whether the tapped item has an attached URL and, if
@@ -154,15 +165,15 @@ - (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)
TTTableLinkedItem* item = object;
if (item.URL && [_controller shouldOpenURL:item.URL]) {
TTOpenURLFromView(item.URL, tableView);
-
- } else if (item.delegate && item.selector) {
+ }
+ else if (item.delegate && item.selector) {
[item.delegate performSelector:item.selector withObject:object];
}
if ([object isKindOfClass:[TTTableButton class]]) {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
-
- } else if ([object isKindOfClass:[TTTableMoreButton class]]) {
+ }
+ else if ([object isKindOfClass:[TTTableMoreButton class]]) {
TTTableMoreButton* moreLink = (TTTableMoreButton*)object;
moreLink.isLoading = YES;
TTTableMoreButtonCell* cell
@@ -172,8 +183,8 @@ - (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)
if (moreLink.model) {
[moreLink.model load:TTURLRequestCachePolicyDefault more:YES];
-
- } else {
+ }
+ else {
[_controller.model load:TTURLRequestCachePolicyDefault more:YES];
}
}
View
5 src/Three20UI/Sources/UIViewAdditions.m
@@ -27,7 +27,7 @@
// Remove GSEvent and UITouchAdditions from Release builds
-#ifdef DEBUG
+#ifdef DEBUG_TOUCHES
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -423,7 +423,8 @@ - (void)removeAllSubviews {
}
-#ifdef DEBUG
+#ifdef DEBUG_TOUCHES
+
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)simulateTapAtPoint:(CGPoint)location {
View
2  src/Three20UI/Three20UI.xcodeproj/project.pbxproj
@@ -1953,7 +1953,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
- LastUpgradeCheck = 0420;
+ LastUpgradeCheck = 0430;
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Three20UI" */;
compatibilityVersion = "Xcode 3.2";
View
7 src/Three20UINavigator/Headers/TTURLMap.h
@@ -42,6 +42,13 @@
*/
- (void)from:(NSString*)URL toObject:(id)object;
- (void)from:(NSString*)URL toObject:(id)object selector:(SEL)selector;
+/**
+ * Specifies the navigation mode to use. If TTNavigationModeCreate, TTNavigationModeShared
+ * are used, then if this URL is referenced from a table - ie TTTableLinkedItem or
+ * one of it's subclasses - a disclosure button will be added.
+ */
+- (void)from:(NSString*)URL toObject:(id)target selector:(SEL)selector
+ mode:(TTNavigationMode)mode;
/**
* Adds a URL pattern which will create and present a view controller when loaded.
View
9 src/Three20UINavigator/Sources/TTURLMap.m
@@ -196,6 +196,15 @@ - (void)from:(NSString*)URL toObject:(id)target selector:(SEL)selector {
[pattern release];
}
+///////////////////////////////////////////////////////////////////////////////////////////////////
+- (void)from:(NSString*)URL toObject:(id)target selector:(SEL)selector mode:
+(TTNavigationMode) mode {TTURLNavigatorPattern* pattern =
+ [[TTURLNavigatorPattern alloc] initWithTarget:target mode: mode];
+ pattern.selector = selector;
+ [self addObjectPattern:pattern forURL:URL];
+ [pattern release];
+}
+
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)from:(NSString*)URL toViewController:(id)target {
View
2  src/extThree20JSON/Source/TTURLJSONResponse.m
@@ -58,7 +58,7 @@ - (NSError*)request:(TTURLRequest*)request processResponse:(NSHTTPURLResponse*)r
// This response is designed for NSData objects, so if we get anything else it's probably a
// mistake.
TTDASSERT([data isKindOfClass:[NSData class]]);
- TTDASSERT(nil == _rootObject);
+ TT_RELEASE_SAFELY(_rootObject);
NSError* err = nil;
if ([data isKindOfClass:[NSData class]]) {
#ifdef EXTJSON_SBJSON

No commit comments for this range

Something went wrong with that request. Please try again.