Issue 412
[zxing.git] / iphone / Classes / URIParsedResult.m
index 5d900a2..0ab9833 100644 (file)
 #import "EmailAction.h"
 #import "SMSAction.h"
 
-@implementation NSString (ZXingURLExtensions)
-
-- (bool)looksLikeAURI {
-  if ([self rangeOfCharacterFromSet:[NSCharacterSet whitespaceCharacterSet]].location != NSNotFound) {
-    return false;
-  }
-  if ([self rangeOfString:@":"].location == NSNotFound) {
-    return false;
-  }
-  return true;
-}
-
-- (NSString *)massagedURLString {
-  NSRange colonRange = [self rangeOfString:@":"];
-  if (colonRange.location == NSNotFound) {
-    return [NSString stringWithFormat:@"http://%@", self];
-  } else {
-    return [NSString stringWithFormat:@"%@%@",
-            [[self substringToIndex:colonRange.location] lowercaseString],
-            [self substringFromIndex:colonRange.location]
-            ];
-  }
-}
-
-@end
 
 @implementation URIParsedResult
 
-#define PREFIX @"URL:"
-
 @synthesize urlString;
+@synthesize title;
 @synthesize URL;
 
 - (ResultAction *)createAction {
-  NSString *scheme = [self.URL scheme];
-  if (scheme) {
-    if ([@"mailto" isEqualToString:scheme]) {
-      return [EmailAction actionWithRecipient:[urlString substringFromIndex:7] 
-                                      subject:nil 
-                                         body:nil];
-    } else if ([@"sms" isEqualToString:scheme]) {
-      return [SMSAction actionWithNumber:[urlString substringFromIndex:4]];
-    }
-  }
   return [OpenUrlAction actionWithURL:self.URL];
 }
 
-- initWithURLString:(NSString *)s URL:(NSURL *)url {
+- (id)initWithURLString:(NSString *)s title:(NSString *)t URL:(NSURL *)url {
   if ((self = [super init]) != nil) {
     self.urlString = s;
+    self.title = t;
     self.URL = url;
   }
   return self;
 }
 
-- initWithURLString:(NSString *)s {
-  return [self initWithURLString:s URL:[NSURL URLWithString:s]];
+- (id)initWithURLString:(NSString *)s URL:(NSURL *)url {
+  return [self initWithURLString:s title:nil URL:url];
 }
 
-+ parsedResultForString:(NSString *)s {
-  NSRange prefixRange = [s rangeOfString:PREFIX options:NSCaseInsensitiveSearch];
-  if (prefixRange.location == 0) {
-    int restStart = prefixRange.location + prefixRange.length;
-    return [[[self alloc] initWithURLString:[[s substringFromIndex:restStart] massagedURLString]]
-            autorelease];
-  }
-  
-  if ([s looksLikeAURI]) {
-    NSString *massaged = [s massagedURLString];
-    NSURL *url = [NSURL URLWithString:massaged];
-    if (url != nil) {
-      return [[[self alloc] initWithURLString:massaged URL:url] autorelease];
-    }
-  }
-  
-  return nil;
+- (id)initWithURLString:(NSString *)s title:(NSString *)t {
+  return [self initWithURLString:s title:t URL:[NSURL URLWithString:s]];
 }
 
-- (NSString *)stringForDisplay {
-  return self.urlString;
+- (id)initWithURLString:(NSString *)s {
+  return [self initWithURLString:s title:nil URL:[NSURL URLWithString:s]];
 }
 
+- (NSString *)stringForDisplay {
+  return self.title ? 
+  [NSString stringWithFormat:@"%@ <%@>", self.title, self.urlString] :
+  self.urlString;
+}
 
 + (NSString *)typeName {
-  return @"URI";
+  return NSLocalizedString(@"URIParsedResult type name", @"URI");
 }
 
+- (UIImage *)icon {
+  return [UIImage imageNamed:@"link2.png"];
+}
 
 - (void)populateActions { 
+#ifdef DEBUG
   NSLog(@"creating action to open URL '%@'", self.urlString);
+#endif
+  
   [actions addObject:[self createAction]];
 }