Skip to content

Commit

Permalink
Merge branch 'development' of https://github.com/facebook/three20 int…
Browse files Browse the repository at this point in the history
…o development

Conflicts:
	src/Three20Network/Sources/TTURLRequest.m
  • Loading branch information
jdewind committed Jul 11, 2011
2 parents 8eb7af2 + 43c6c66 commit 35ccb07
Show file tree
Hide file tree
Showing 227 changed files with 5,839 additions and 1,326 deletions.
18 changes: 18 additions & 0 deletions samples/Style/TTCSSStyleSheets/Classes/SampleCSSStyleSheet.h
@@ -0,0 +1,18 @@
//
// Copyright 2009-2011 Facebook
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

@interface SampleCSSStyleSheet : TTDefaultCSSStyleSheet {}
@end
36 changes: 36 additions & 0 deletions samples/Style/TTCSSStyleSheets/Classes/SampleCSSStyleSheet.m
@@ -0,0 +1,36 @@
//
// Copyright 2009-2011 Facebook
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

#import "SampleCSSStyleSheet.h"

@implementation SampleCSSStyleSheet

- (TTStyle *)h3:(UIControlState)state {
return
[TTSolidFillStyle styleWithColor:TTCSSSTATE(@"h3", backgroundColor, state) next:
[TTTextStyle styleWithCssSelector:@"h3" forState:state next:
nil]];
}

- (TTStyle *)h4:(UIControlState)state {
return
[TTSolidFillStyle styleWithColor:TTCSSSTATE(@"h4text", backgroundColor, state) next:
[TTShadowStyle styleWithCssSelector:@"h4shadow" forState:state next:
[TTTextStyle styleWithCssSelector:@"h4text" forState:state next:
nil]]];
}

@end
Expand Up @@ -16,8 +16,6 @@


@interface StyleSheetViewController : TTViewController { @interface StyleSheetViewController : TTViewController {
@private @private
TTCSSStyleSheet* _styleSheet;

BOOL _loadedSuccessfully; BOOL _loadedSuccessfully;
} }


Expand Down
68 changes: 45 additions & 23 deletions samples/Style/TTCSSStyleSheets/Classes/StyleSheetViewController.m
Expand Up @@ -16,6 +16,8 @@


#import "StyleSheetViewController.h" #import "StyleSheetViewController.h"


#import "SampleCSSStyleSheet.h"



/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
Expand All @@ -25,25 +27,18 @@ @implementation StyleSheetViewController


/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
_styleSheet = [[TTCSSStyleSheet alloc] init]; if (self) {

SampleCSSStyleSheet *_styleSheet = [[[SampleCSSStyleSheet alloc] init] autorelease];
_loadedSuccessfully = [_styleSheet _loadedSuccessfully = [_styleSheet
loadFromFilename:TTPathForBundleResource(@"stylesheet.css")]; addStyleSheetFromDisk:TTPathForBundleResource(@"stylesheet.css")];
[TTStyleSheet setGlobalStyleSheet:_styleSheet];
} }


return self; return self;
} }




///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)dealloc {
TT_RELEASE_SAFELY(_styleSheet);

[super dealloc];
}


/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)loadView { - (void)loadView {
[super loadView]; [super loadView];
Expand All @@ -55,23 +50,50 @@ - (void)loadView {
} }


self.title = @"Three20 CSS extension"; self.title = @"Three20 CSS extension";
self.view.backgroundColor = TTCSS(@"body", backgroundColor);


self.view.backgroundColor = [_styleSheet backgroundColorWithCssSelector: @"body" // Using helper macro
forState: UIControlStateNormal];

UILabel* headerLabel = [[UILabel alloc] initWithFrame:CGRectZero]; UILabel* headerLabel = [[UILabel alloc] initWithFrame:CGRectZero];
headerLabel.text = @"Header text"; headerLabel.text = @"Header text";
headerLabel.font = [_styleSheet fontWithCssSelector:@"h1" forState:UIControlStateNormal]; headerLabel.font = TTCSS(@"h1", font);
headerLabel.textColor = [_styleSheet colorWithCssSelector:@"h1" forState:UIControlStateNormal]; headerLabel.textColor = TTCSS(@"h1", color);
headerLabel.backgroundColor = [_styleSheet backgroundColorWithCssSelector: @"h1" headerLabel.backgroundColor = TTCSS(@"h1", backgroundColor);
forState: UIControlStateNormal]; headerLabel.shadowColor = TTCSS(@"h1", shadowColor);
headerLabel.shadowColor = [_styleSheet textShadowColorWithCssSelector: @"h1" headerLabel.shadowOffset = TTCSS(@"h1", shadowOffset);
forState: UIControlStateNormal];
headerLabel.shadowOffset = [_styleSheet textShadowOffsetWithCssSelector: @"h1"
forState: UIControlStateNormal];
[headerLabel sizeToFit]; [headerLabel sizeToFit];
[self.view addSubview:headerLabel]; [self.view addSubview:headerLabel];

// Using UILabel addition
UILabel* headerLabel2 = [[UILabel alloc] initWithFrame:CGRectZero];
headerLabel2.text = @"Header 2 text";
[headerLabel2 applyCssSelector:@"h2"];
[headerLabel2 sizeToFit];
CGFloat top = headerLabel.frame.size.height;
CGRect frame = headerLabel2.frame;
frame.origin.y = top;
headerLabel2.frame = frame;
[self.view addSubview:headerLabel2];

// Using TTTextStyle addition
TTButton* headerLabel3 = [TTButton buttonWithStyle:@"h3:" title:@"Header 3 text"];
[headerLabel3 sizeToFit];
top += headerLabel2.frame.size.height;
frame = headerLabel3.frame;
frame.origin.y = top;
headerLabel3.frame = frame;
[self.view addSubview:headerLabel3];

// Using TTTextStyle + TTShadowStyle addition
TTButton* headerLabel4 = [TTButton buttonWithStyle:@"h4:" title:@"Header 4 text"];
[headerLabel4 sizeToFit];
top += headerLabel2.frame.size.height;
frame = headerLabel4.frame;
frame.origin.y = top;
headerLabel4.frame = frame;
[self.view addSubview:headerLabel4];

TT_RELEASE_SAFELY(headerLabel); TT_RELEASE_SAFELY(headerLabel);
TT_RELEASE_SAFELY(headerLabel2);
} }




Expand Down
Expand Up @@ -6,6 +6,6 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "Three20/Three20.h" #import "Three20/Three20.h"
#import "extThree20CSSStyle/extThree20CSSStyle.h" #import "extThree20CSSStyle/extThree20CSSStyle+Additions.h"
#import "Atlas.h" #import "Atlas.h"
#endif #endif
37 changes: 34 additions & 3 deletions samples/Style/TTCSSStyleSheets/Resources/stylesheet.css
Expand Up @@ -15,13 +15,44 @@
*/ */


body { body {
background-color: #111; background-color: #114;
} }


h1 { h1 {
font-weight: bold; font-weight: bold;
font-size: 50pt; font-size: 50pt;
color: #666; color: #FF6;
background-color: transparent; background-color: transparent;
text-shadow: 1px 1px 1px #999; /* blur amount (3rd value) doesn't do anything */ text-shadow: 2px 2px 0px #F99;
} }

h2 {
font-size: 45pt;
color: white;
background-color: transparent;
text-shadow: 0px 1px 3px #9BF;
}

h3, h3:hover {
font-size: 35pt;
font-weight: bold;
color: white;
background-color: transparent;
text-shadow: 3px -3px 3px #99F;
}

h3:hover {
color: #99F;
text-shadow: 3px 3px 3px white;
}

h4text, h4text:hover {
color: white;
font-size: 35pt;
background-color: transparent;
}

h4text:hover { color: gray; }

h4shadow { text-shadow: 3px 3px 4px rgba(0, 255, 0, .5); }
h4shadow:hover { text-shadow: 0px 0px 4px green; }
Expand Up @@ -28,6 +28,7 @@
6E850FAE11B176F10071A4FD /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 6E850FAC11B176F10071A4FD /* Default.png */; }; 6E850FAE11B176F10071A4FD /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 6E850FAC11B176F10071A4FD /* Default.png */; };
6E850FAF11B176F10071A4FD /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 6E850FAD11B176F10071A4FD /* Icon.png */; }; 6E850FAF11B176F10071A4FD /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 6E850FAD11B176F10071A4FD /* Icon.png */; };
6E850FB811B1795F0071A4FD /* Atlas.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E850FB711B1795F0071A4FD /* Atlas.m */; }; 6E850FB811B1795F0071A4FD /* Atlas.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E850FB711B1795F0071A4FD /* Atlas.m */; };
90C3A1C1132BF66B00AC06A2 /* SampleCSSStyleSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = 90C3A1C0132BF66B00AC06A2 /* SampleCSSStyleSheet.m */; };
EB383B6510BBF62B0000B2D2 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB383B6410BBF62B0000B2D2 /* QuartzCore.framework */; }; EB383B6510BBF62B0000B2D2 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB383B6410BBF62B0000B2D2 /* QuartzCore.framework */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */


Expand Down Expand Up @@ -234,6 +235,8 @@
6E850FB711B1795F0071A4FD /* Atlas.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Atlas.m; sourceTree = "<group>"; }; 6E850FB711B1795F0071A4FD /* Atlas.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Atlas.m; sourceTree = "<group>"; };
6E8513D111B19B080071A4FD /* TTCSSStyleSheets_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TTCSSStyleSheets_Prefix.pch; path = Headers/TTCSSStyleSheets_Prefix.pch; sourceTree = "<group>"; }; 6E8513D111B19B080071A4FD /* TTCSSStyleSheets_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TTCSSStyleSheets_Prefix.pch; path = Headers/TTCSSStyleSheets_Prefix.pch; sourceTree = "<group>"; };
6E8513D211B19B0E0071A4FD /* TTCSSStyleSheets-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "TTCSSStyleSheets-Info.plist"; sourceTree = "<group>"; }; 6E8513D211B19B0E0071A4FD /* TTCSSStyleSheets-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "TTCSSStyleSheets-Info.plist"; sourceTree = "<group>"; };
90C3A1BF132BF66B00AC06A2 /* SampleCSSStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SampleCSSStyleSheet.h; sourceTree = "<group>"; };
90C3A1C0132BF66B00AC06A2 /* SampleCSSStyleSheet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SampleCSSStyleSheet.m; sourceTree = "<group>"; };
EB383B6410BBF62B0000B2D2 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; EB383B6410BBF62B0000B2D2 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */ /* End PBXFileReference section */


Expand Down Expand Up @@ -268,6 +271,8 @@
1D3623250D0F684500981E51 /* AppDelegate.m */, 1D3623250D0F684500981E51 /* AppDelegate.m */,
6E850FB611B1795F0071A4FD /* Atlas.h */, 6E850FB611B1795F0071A4FD /* Atlas.h */,
6E850FB711B1795F0071A4FD /* Atlas.m */, 6E850FB711B1795F0071A4FD /* Atlas.m */,
90C3A1BF132BF66B00AC06A2 /* SampleCSSStyleSheet.h */,
90C3A1C0132BF66B00AC06A2 /* SampleCSSStyleSheet.m */,
); );
path = Classes; path = Classes;
sourceTree = "<group>"; sourceTree = "<group>";
Expand Down Expand Up @@ -680,6 +685,7 @@
1D3623260D0F684500981E51 /* AppDelegate.m in Sources */, 1D3623260D0F684500981E51 /* AppDelegate.m in Sources */,
6E850FB811B1795F0071A4FD /* Atlas.m in Sources */, 6E850FB811B1795F0071A4FD /* Atlas.m in Sources */,
6E036BF811B38F3C0025E8EE /* StyleSheetViewController.m in Sources */, 6E036BF811B38F3C0025E8EE /* StyleSheetViewController.m in Sources */,
90C3A1C1132BF66B00AC06A2 /* SampleCSSStyleSheet.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
Expand Down
9 changes: 9 additions & 0 deletions samples/TTCatalog/Classes/ImageTest1Controller.m
Expand Up @@ -3,6 +3,8 @@


@implementation ImageTest1Controller @implementation ImageTest1Controller


static NSString * kDataUrlImage = @"data:image/png;base64,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";

- (void)loadView { - (void)loadView {
self.view = [[[UIView alloc] init] autorelease]; self.view = [[[UIView alloc] init] autorelease];
self.view.backgroundColor = [UIColor whiteColor]; self.view.backgroundColor = [UIColor whiteColor];
Expand All @@ -12,6 +14,13 @@ - (void)loadView {
imageView.autoresizesToImage = YES; imageView.autoresizesToImage = YES;
imageView.urlPath = @"http://farm4.static.flickr.com/3163/3110335722_7a906f9d8b_m.jpg"; imageView.urlPath = @"http://farm4.static.flickr.com/3163/3110335722_7a906f9d8b_m.jpg";
[self.view addSubview:imageView]; [self.view addSubview:imageView];

TTImageView* dataImageView = [[[TTImageView alloc] initWithFrame:CGRectMake(130, 200, 0, 0)]
autorelease];
dataImageView.autoresizesToImage = YES;
dataImageView.urlPath = kDataUrlImage;
[self.view addSubview:dataImageView];

} }


- (void)dealloc { - (void)dealloc {
Expand Down

0 comments on commit 35ccb07

Please sign in to comment.