Issue 1177 add title field

git-svn-id: https://zxing.googlecode.com/svn/trunk@2215 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
srowen 2012-03-03 15:57:48 +00:00
parent 5287b54bb2
commit 776984bb8f
3 changed files with 67 additions and 30 deletions

View file

@ -27,6 +27,7 @@ import com.google.gwt.user.client.ui.Widget;
* A Generator for contact informations, output is in MeCard format. * A Generator for contact informations, output is in MeCard format.
* *
* @author Yohann Coppel * @author Yohann Coppel
* @author Sean Owen
*/ */
public final class ContactInfoGenerator implements GeneratorSource { public final class ContactInfoGenerator implements GeneratorSource {
@ -34,6 +35,7 @@ public final class ContactInfoGenerator implements GeneratorSource {
private final ListBox encoding = new ListBox(); private final ListBox encoding = new ListBox();
private final TextBox name = new TextBox(); private final TextBox name = new TextBox();
private final TextBox company = new TextBox(); private final TextBox company = new TextBox();
private final TextBox title = new TextBox();
private final TextBox tel = new TextBox(); private final TextBox tel = new TextBox();
private final TextBox url = new TextBox(); private final TextBox url = new TextBox();
private final TextBox email = new TextBox(); private final TextBox email = new TextBox();
@ -61,6 +63,7 @@ public final class ContactInfoGenerator implements GeneratorSource {
public String getText() throws GeneratorException { public String getText() throws GeneratorException {
String name = getNameField(); String name = getNameField();
String company = getCompanyField(); String company = getCompanyField();
String title = getTitleField();
String tel = getTelField(); String tel = getTelField();
String url = getUrlField(); String url = getUrlField();
String email = getEmailField(); String email = getEmailField();
@ -71,13 +74,20 @@ public final class ContactInfoGenerator implements GeneratorSource {
// Build the output with obtained data. // Build the output with obtained data.
// note that some informations may just be "" if they were not specified. // note that some informations may just be "" if they were not specified.
if ("vCard".equals(encoding.getValue(encoding.getSelectedIndex()))) { if ("vCard".equals(encoding.getValue(encoding.getSelectedIndex()))) {
return getVCard(name, company, tel, url, email, address, address2, memo); return getVCard(name, company, title, tel, url, email, address, address2, memo);
} }
return getMeCard(name, company, tel, url, email, address, address2, memo); return getMeCard(name, company, title, tel, url, email, address, address2, memo);
} }
private static String getMeCard(String name, String company, String tel, String url, private static String getMeCard(String name,
String email, String address, String address2, String memo) { String company,
String title,
String tel,
String url,
String email,
String address,
String address2,
String memo) {
StringBuilder output = new StringBuilder(100); StringBuilder output = new StringBuilder(100);
output.append("MECARD:"); output.append("MECARD:");
maybeAppendMECARD(output, "N", name.replace(",", "")); maybeAppendMECARD(output, "N", name.replace(",", ""));
@ -86,38 +96,56 @@ public final class ContactInfoGenerator implements GeneratorSource {
maybeAppendMECARD(output, "URL", url); maybeAppendMECARD(output, "URL", url);
maybeAppendMECARD(output, "EMAIL", email); maybeAppendMECARD(output, "EMAIL", email);
maybeAppendMECARD(output, "ADR", buildAddress(address, address2)); maybeAppendMECARD(output, "ADR", buildAddress(address, address2));
maybeAppendMECARD(output, "NOTE", memo); StringBuilder memoContents = new StringBuilder();
if (memo != null) {
memoContents.append(memo);
}
if (title != null) {
if (memoContents.length() > 0) {
memoContents.append('\n');
}
memoContents.append(title);
}
maybeAppendMECARD(output, "NOTE", memoContents.toString());
output.append(';'); output.append(';');
return output.toString(); return output.toString();
} }
private static String buildAddress(String address, String address2) { private static String buildAddress(String address, String address2) {
if (address.length() > 0) { if (!address.isEmpty()) {
if (address2.length() > 0) { if (!address2.isEmpty()) {
return address + ' ' + address2; return address + ' ' + address2;
} }
return address; return address;
} }
if (address2.length() > 0) { if (!address2.isEmpty()) {
return address2; return address2;
} }
return ""; return "";
} }
private static void maybeAppendMECARD(StringBuilder output, String prefix, String value) { private static void maybeAppendMECARD(StringBuilder output, String prefix, String value) {
if (value.length() > 0) { if (!value.isEmpty()) {
value = value.replaceAll("([\\\\:;])", "\\\\$1"); value = value.replaceAll("([\\\\:;])", "\\\\$1");
value = value.replaceAll("\\n", ""); value = value.replaceAll("\\n", "");
output.append(prefix).append(':').append(value).append(';'); output.append(prefix).append(':').append(value).append(';');
} }
} }
private static String getVCard(String name, String company, String tel, String url, private static String getVCard(String name,
String email, String address, String address2, String memo) { String company,
String title,
String tel,
String url,
String email,
String address,
String address2,
String memo) {
StringBuilder output = new StringBuilder(100); StringBuilder output = new StringBuilder(100);
output.append("BEGIN:VCARD\n"); output.append("BEGIN:VCARD\n");
maybeAppendvCard(output, "N", name); maybeAppendvCard(output, "N", name);
maybeAppendvCard(output, "ORG", company); maybeAppendvCard(output, "ORG", company);
maybeAppendvCard(output, "TITLE", title);
maybeAppendvCard(output, "TEL", tel); maybeAppendvCard(output, "TEL", tel);
maybeAppendvCard(output, "URL", url); maybeAppendvCard(output, "URL", url);
maybeAppendvCard(output, "EMAIL", email); maybeAppendvCard(output, "EMAIL", email);
@ -128,7 +156,7 @@ public final class ContactInfoGenerator implements GeneratorSource {
} }
private static void maybeAppendvCard(StringBuilder output, String prefix, String value) { private static void maybeAppendvCard(StringBuilder output, String prefix, String value) {
if (value.length() > 0) { if (!value.isEmpty()) {
value = value.replaceAll("([\\\\,;])", "\\\\$1"); value = value.replaceAll("([\\\\,;])", "\\\\$1");
value = value.replaceAll("\\n", "\\\\n"); value = value.replaceAll("\\n", "\\\\n");
output.append(prefix).append(':').append(value).append('\n'); output.append(prefix).append(':').append(value).append('\n');
@ -147,6 +175,10 @@ public final class ContactInfoGenerator implements GeneratorSource {
return company.getText(); return company.getText();
} }
private String getTitleField() {
return title.getText();
}
private String getTelField() throws GeneratorException { private String getTelField() throws GeneratorException {
String input = Validators.filterNumber(tel.getText()); String input = Validators.filterNumber(tel.getText());
if (input.length() < 1) { if (input.length() < 1) {
@ -161,7 +193,7 @@ public final class ContactInfoGenerator implements GeneratorSource {
private String getUrlField() throws GeneratorException { private String getUrlField() throws GeneratorException {
String input = url.getText(); String input = url.getText();
if (input != null && input.length() > 0) { if (input != null && !input.isEmpty()) {
Validators.validateUrl(input); Validators.validateUrl(input);
} }
return input; return input;
@ -197,26 +229,28 @@ public final class ContactInfoGenerator implements GeneratorSource {
// early termination if the table has already been constructed // early termination if the table has already been constructed
return table; return table;
} }
table = new Grid(9, 2); table = new Grid(10, 2);
table.setText(0, 0, "Name"); table.setText(0, 0, "Name");
table.setWidget(0, 1, name); table.setWidget(0, 1, name);
table.setText(1, 0, "Company"); table.setText(1, 0, "Company");
table.setWidget(1, 1, company); table.setWidget(1, 1, company);
table.setText(2, 0, "Phone number"); table.setText(2, 0, "Title");
table.setWidget(2, 1, tel); table.setWidget(2, 1, title);
table.setText(3, 0, "Email"); table.setText(3, 0, "Phone number");
table.setWidget(3, 1, email); table.setWidget(3, 1, tel);
table.setText(4, 0, "Address"); table.setText(4, 0, "Email");
table.setWidget(4, 1, address); table.setWidget(4, 1, email);
table.setText(5, 0, "Address 2"); table.setText(5, 0, "Address");
table.setWidget(5, 1, address2); table.setWidget(5, 1, address);
table.setText(6, 0, "Website"); table.setText(6, 0, "Address 2");
table.setWidget(6, 1, url); table.setWidget(6, 1, address2);
table.setText(7, 0, "Memo"); table.setText(7, 0, "Website");
table.setWidget(7, 1, memo); table.setWidget(7, 1, url);
table.setText(8, 0, "Encoding"); table.setText(8, 0, "Memo");
table.setWidget(8, 1, encoding); table.setWidget(8, 1, memo);
table.setText(9, 0, "Encoding");
table.setWidget(9, 1, encoding);
name.addStyleName(StylesDefs.INPUT_FIELD_REQUIRED); name.addStyleName(StylesDefs.INPUT_FIELD_REQUIRED);
return table; return table;
@ -230,6 +264,9 @@ public final class ContactInfoGenerator implements GeneratorSource {
if (widget == company) { if (widget == company) {
getCompanyField(); getCompanyField();
} }
if (widget == title) {
getTitleField();
}
if (widget == tel) { if (widget == tel) {
getTelField(); getTelField();
} }

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>zxing</application> <application>zxing</application>
<version>6</version> <version>7</version>
</appengine-web-app> </appengine-web-app>

View file

@ -1,5 +1,5 @@
application: zxing application: zxing
version: 6 version: 7
runtime: python runtime: python
api_version: 1 api_version: 1