Normalize TEL: to tel: to make sure it works with Android
[zxing.git] / core / src / com / google / zxing / client / result / SMSParsedResult.java
index 65066da..6b57b79 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 Google Inc.
+ * Copyright 2008 ZXing authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package com.google.zxing.client.result;
 
-import com.google.zxing.Result;
-
 /**
- * Represents a "sms:" URI result, which specifies a number to SMS and optional
- * "via" number. See <a href="http://gbiv.com/protocols/uri/drafts/draft-antti-gsm-sms-url-04.txt">
- * the IETF draft</a> on this.
- *
- * @author srowen@google.com (Sean Owen)
+ * @author Sean Owen
  */
-public final class SMSParsedResult extends ParsedReaderResult {
+public final class SMSParsedResult extends ParsedResult {
 
   private final String smsURI;
   private final String number;
   private final String via;
+  private final String subject;
+  private final String body;
+  private final String title;
 
-  private SMSParsedResult(String smsURI, String number, String via) {
-    super(ParsedReaderResultType.SMS);
+  public SMSParsedResult(String smsURI, String number, String via, String subject, String body, String title) {
+    super(ParsedResultType.SMS);
     this.smsURI = smsURI;
     this.number = number;
     this.via = via;
-  }
-
-  public static SMSParsedResult parse(Result result) {
-    String rawText = result.getText();
-    if (rawText == null || !rawText.startsWith("sms:")) {
-      return null;
-    }
-    // Drop sms, query portion
-    int queryStart = rawText.indexOf('?', 4);
-    String smsURIWithoutQuery;
-    if (queryStart < 0) {
-      smsURIWithoutQuery = rawText.substring(4);
-    } else {
-      smsURIWithoutQuery = rawText.substring(4, queryStart);
-    }
-    int numberEnd = smsURIWithoutQuery.indexOf(';');
-    String number;
-    String via;
-    if (numberEnd < 0) {
-      number = smsURIWithoutQuery;
-      via = null;
-    } else {
-      number = smsURIWithoutQuery.substring(0, numberEnd);
-      String maybeVia = smsURIWithoutQuery.substring(numberEnd + 1);
-      if (maybeVia.startsWith("via=")) {
-        via = maybeVia.substring(4);
-      } else {
-        via = null;
-      }
-    }
-    return new SMSParsedResult(rawText, number, via);
+    this.subject = subject;
+    this.body = body;
+    this.title = title;
   }
 
   public String getSMSURI() {
@@ -81,8 +50,26 @@ public final class SMSParsedResult extends ParsedReaderResult {
     return via;
   }
 
+  public String getSubject() {
+    return subject;
+  }
+
+  public String getBody() {
+    return body;
+  }
+
+  public String getTitle() {
+    return title;
+  }
+
   public String getDisplayResult() {
-    return number;
+    StringBuffer result = new StringBuffer();
+    maybeAppend(number, result);
+    maybeAppend(via, result);
+    maybeAppend(subject, result);
+    maybeAppend(body, result);
+    maybeAppend(title, result);
+    return result.toString();
   }
 
 }
\ No newline at end of file