From b60aec3598a12a5bf07ad490fa87723e308cd58b Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Sun, 10 Nov 2013 15:56:03 +0400 Subject: Images --- Juick/AttachPlaceholder.png | Bin 0 -> 15565 bytes Juick/Message.h | 1 + Juick/Message.m | 2 ++ Juick/MessageCell.h | 8 +++++++- Juick/MessageCell.m | 38 ++++++++++++++++++++++++++++++++++++-- Juick/MessagesViewController.h | 1 - Juick/MessagesViewController.m | 37 ++++--------------------------------- Juick/UIImage+Helpers.h | 15 --------------- Juick/UIImage+Helpers.m | 24 ------------------------ 9 files changed, 50 insertions(+), 76 deletions(-) create mode 100644 Juick/AttachPlaceholder.png delete mode 100644 Juick/UIImage+Helpers.h delete mode 100644 Juick/UIImage+Helpers.m (limited to 'Juick') diff --git a/Juick/AttachPlaceholder.png b/Juick/AttachPlaceholder.png new file mode 100644 index 0000000..94e8c32 Binary files /dev/null and b/Juick/AttachPlaceholder.png differ diff --git a/Juick/Message.h b/Juick/Message.h index 927d9f0..10e9fb3 100644 --- a/Juick/Message.h +++ b/Juick/Message.h @@ -18,6 +18,7 @@ @property(nonatomic, copy) NSString *text; @property(nonatomic, copy) NSArray *tags; @property(nonatomic, copy) NSString *timestamp; +@property(nonatomic, copy) NSString *attach; @property(nonatomic, copy) NSString *repliesBy; @property(nonatomic, copy) NSDecimalNumber *repliesCount; diff --git a/Juick/Message.m b/Juick/Message.m index 7d805b4..1d023c1 100644 --- a/Juick/Message.m +++ b/Juick/Message.m @@ -22,8 +22,10 @@ @"rid" : @"RID", @"tags" : @"tags", @"timestamp" : @"timestamp", + @"photo.small" : @"attach", @"replies" : @"repliesCount", @"repliesby": @"repliesBy" + }]; RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodAny pathPattern:nil keyPath:nil statusCodes:nil]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; diff --git a/Juick/MessageCell.h b/Juick/MessageCell.h index 342aecc..c1298af 100644 --- a/Juick/MessageCell.h +++ b/Juick/MessageCell.h @@ -9,6 +9,10 @@ #import #import "TTTAttributedLabel.h" +#import "Message.h" + +#import "NSString+HTML.h" + #define kLabelHorizontalInsets 20.0f @@ -18,8 +22,10 @@ @property (strong, nonatomic) IBOutlet UILabel *timestampLabel; @property (strong, nonatomic) IBOutlet UIImageView *avatar; @property (strong, nonatomic) IBOutlet TTTAttributedLabel *bodyLabel; +@property (strong, nonatomic) IBOutlet UIImageView *attach; @property (strong, nonatomic) IBOutlet UILabel *summaryLabel; -- (void)updateFonts; +- (void) updateFonts; +- (void) bind:(Message *)msg; @end diff --git a/Juick/MessageCell.m b/Juick/MessageCell.m index cf2e134..ad3a849 100644 --- a/Juick/MessageCell.m +++ b/Juick/MessageCell.m @@ -22,6 +22,8 @@ { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { + [self setBackgroundColor:[UIColor whiteColor]]; + self.selectionStyle = UITableViewCellSelectionStyleNone; self.avatar = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)]; [self.avatar setBackgroundColor:[UIColor clearColor]]; @@ -31,7 +33,7 @@ [self.titleLabel setLineBreakMode:NSLineBreakByTruncatingTail]; [self.titleLabel setNumberOfLines:1]; [self.titleLabel setTextAlignment:NSTextAlignmentLeft]; - [self.titleLabel setTextColor:[UIColor blackColor]]; + [self.titleLabel setTextColor:[ColorsAndButtons linkColor]]; [self.titleLabel setBackgroundColor:[UIColor clearColor]]; self.timestampLabel = [[UILabel alloc] initWithFrame:CGRectZero]; @@ -61,11 +63,15 @@ [self.summaryLabel setTextAlignment:NSTextAlignmentLeft]; [self.summaryLabel setTextColor:[UIColor grayColor]]; [self.summaryLabel setBackgroundColor:[UIColor clearColor]]; + self.attach = [[UIImageView alloc] initWithFrame:CGRectZero]; + [self.attach setBackgroundColor:[UIColor clearColor]]; + self.attach.contentMode = UIViewContentModeScaleAspectFit; [self.contentView addSubview:self.avatar]; [self.contentView addSubview:self.titleLabel]; [self.contentView addSubview:self.timestampLabel]; [self.contentView addSubview:self.bodyLabel]; + [self.contentView addSubview:self.attach]; [self.contentView addSubview:self.summaryLabel]; [self updateFonts]; @@ -110,14 +116,20 @@ make.leading.equalTo(self.contentView.leading).with.offset(padding.left); make.top.equalTo(self.timestampLabel.bottom).with.offset(padding.top); make.trailing.equalTo(self.contentView.trailing).with.offset(-padding.right); + make.bottom.equalTo(self.attach.top).with.offset(-padding.bottom); + }]; + + [self.attach makeConstraints:^(MASConstraintMaker *make) { + make.leading.equalTo(self.contentView.leading).with.offset(padding.left); make.bottom.equalTo(self.summaryLabel.top).with.offset(-padding.bottom); + make.trailing.equalTo(self.contentView.trailing).with.offset(-padding.right); + make.top.equalTo(self.bodyLabel.bottom).with.offset(padding.top); }]; [self.summaryLabel makeConstraints:^(MASConstraintMaker *make) { make.leading.equalTo(self.contentView.leading).with.offset(padding.left); make.bottom.equalTo(self.contentView.bottom).with.offset(-padding.bottom); make.trailing.equalTo(self.contentView.trailing).with.offset(-padding.right); - }]; @@ -136,6 +148,28 @@ } } +- (void) bind:(Message *)msg { + [self.avatar setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://i.juick.com/as/%@.png", msg.userID]]]; + + self.titleLabel.text = msg.user; + self.timestampLabel.text = msg.timestamp; + if (msg.repliesCount > 0) { + self.summaryLabel.text = [NSString stringWithFormat:@"%@ replies by %@", msg.repliesCount, msg.repliesBy]; + } else { + self.summaryLabel.text = nil; + } + self.bodyLabel.text = [msg.text stringByDecodingHTMLEntities]; + if ([msg.tags count] > 0) { + self.bodyLabel.text = [[NSString alloc] initWithFormat:@"%@\n%@", [msg.tags componentsJoinedByString:@", "], + [msg.text stringByDecodingHTMLEntities]]; + } + if ([msg.attach length] > 0) { + [self.attach setImageWithURL:[NSURL URLWithString:msg.attach]]; + } else { + self.attach.image = nil; + } +} + - (void) attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url { [[UIApplication sharedApplication] openURL:url]; } diff --git a/Juick/MessagesViewController.h b/Juick/MessagesViewController.h index e3391db..3e6af7e 100644 --- a/Juick/MessagesViewController.h +++ b/Juick/MessagesViewController.h @@ -7,7 +7,6 @@ // #import -#import "NSString+HTML.h" @interface MessagesViewController : UITableViewController - (void)loadFromURL:(NSURL *)messagesURL withTitle:(NSString *)title; diff --git a/Juick/MessagesViewController.m b/Juick/MessagesViewController.m index 2e27d43..372345a 100644 --- a/Juick/MessagesViewController.m +++ b/Juick/MessagesViewController.m @@ -18,7 +18,7 @@ #import "NSURL+PathParameters.h" -#import "UIImage+Helpers.h" +#import static NSString *CellIdentifier = @"MessageCell"; @@ -158,23 +158,7 @@ static NSString *CellIdentifier = @"MessageCell"; MessageCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; [cell updateFonts]; Message *msg = [_messages objectAtIndex:indexPath.row]; - [UIImage loadFromURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://i.juick.com/as/%@.png", msg.userID]] callback:^(UIImage *image) { - [cell.avatar setImage:image]; - }]; - cell.titleLabel.text = msg.user; - cell.titleLabel.textColor = [ColorsAndButtons linkColor]; - cell.timestampLabel.text = msg.timestamp; - if (msg.repliesCount > 0) { - cell.summaryLabel.text = [NSString stringWithFormat:@"%@ replies by %@", msg.repliesCount, msg.repliesBy]; - } else { - cell.summaryLabel.text = nil; - } - cell.bodyLabel.text = [msg.text stringByDecodingHTMLEntities]; - if ([msg.tags count] > 0) { - cell.bodyLabel.text = [[NSString alloc] initWithFormat:@"%@\n%@", [msg.tags componentsJoinedByString:@", "], - [msg.text stringByDecodingHTMLEntities]]; - } - [cell setBackgroundColor:[UIColor whiteColor]]; + [cell bind:msg]; [cell setNeedsUpdateConstraints]; return cell; } @@ -188,22 +172,9 @@ static NSString *CellIdentifier = @"MessageCell"; [cell updateFonts]; Message *msg = [_messages objectAtIndex:indexPath.row]; - [UIImage loadFromURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://i.juick.com/as/%@.png", msg.userID]] callback:^(UIImage *image) { - [cell.avatar setImage:image]; - }]; - cell.titleLabel.text = msg.user; - cell.timestampLabel.text = msg.timestamp; - if (msg.repliesCount > 0) { - cell.summaryLabel.text = [NSString stringWithFormat:@"%@ replies by %@", msg.repliesCount, msg.repliesBy]; - } else { - cell.summaryLabel.text = nil; - } - cell.bodyLabel.text = [msg.text stringByDecodingHTMLEntities]; - if ([msg.tags count] > 0) { - cell.bodyLabel.text = [[NSString alloc] initWithFormat:@"%@\n%@", [msg.tags componentsJoinedByString:@", "], - [msg.text stringByDecodingHTMLEntities]]; - } + [cell bind:msg]; + cell.bodyLabel.preferredMaxLayoutWidth = tableView.bounds.size.width - (kLabelHorizontalInsets * 2.0f); [cell setNeedsUpdateConstraints]; diff --git a/Juick/UIImage+Helpers.h b/Juick/UIImage+Helpers.h deleted file mode 100644 index d30ad7b..0000000 --- a/Juick/UIImage+Helpers.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// UIImage+Helpers.h -// Juick -// -// Created by Vitaly Takmazov on 05.11.13. -// Copyright (c) 2013 com.juick. All rights reserved. -// - -#import - -@interface UIImage (Helpers) - -+ (void) loadFromURL: (NSURL*) url callback:(void (^)(UIImage *image))callback; - -@end diff --git a/Juick/UIImage+Helpers.m b/Juick/UIImage+Helpers.m deleted file mode 100644 index a4ae8e4..0000000 --- a/Juick/UIImage+Helpers.m +++ /dev/null @@ -1,24 +0,0 @@ -// -// UIImage+Helpers.m -// Juick -// -// Created by Vitaly Takmazov on 05.11.13. -// Copyright (c) 2013 com.juick. All rights reserved. -// - -#import "UIImage+Helpers.h" - -@implementation UIImage (Helpers) - -+ (void) loadFromURL: (NSURL*) url callback:(void (^)(UIImage *image))callback { - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); - dispatch_async(queue, ^{ - NSData * imageData = [NSData dataWithContentsOfURL:url]; - dispatch_async(dispatch_get_main_queue(), ^{ - UIImage *image = [UIImage imageWithData:imageData]; - callback(image); - }); - }); -} - -@end -- cgit v1.2.3