package be.nikiroo.jvcard.tui.panes;
import java.awt.Image;
-import java.io.ByteArrayInputStream;
import java.util.LinkedList;
import java.util.List;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import javax.imageio.ImageIO;
-import javax.xml.bind.DatatypeConverter;
-
import be.nikiroo.jvcard.Contact;
import be.nikiroo.jvcard.Data;
import be.nikiroo.jvcard.TypeInfo;
private boolean fullscreenImage;
private Panel infoPanel;
private Label note;
- ResourceBundle map;
+
+ // from .properties file:
+ private int labelSize = -1;
+ private String infoFormat = "";
+ //
public ContactDetails(Contact contact) {
- map = Bundles.getBundle("display");
+ // Get the .properties info:
+ ResourceBundle map = Bundles.getBundle("display");
+
+ try {
+ labelSize = Integer.parseInt(map
+ .getString("CONTACT_DETAILS_LABEL_WIDTH"));
+
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ labelSize = -1;
+ } catch (MissingResourceException e) {
+ labelSize = -1;
+ }
+
+ try {
+ infoFormat = map.getString("CONTACT_DETAILS_INFO");
+ } catch (MissingResourceException e) {
+ e.printStackTrace();
+ }
+ //
BorderLayout blayout = new BorderLayout();
setLayoutManager(blayout);
infoPanel.removeAllComponents();
String name = contact.getPreferredDataValue("FN");
- if (name == null || name.length() == 0) {
- // TODO format it ourself
- name = contact.getPreferredDataValue("N");
- }
-
infoPanel.addComponent(UiColors.Element.VIEW_CONTACT_NAME
.createLabel(name));
infoPanel.addComponent(UiColors.Element.VIEW_CONTACT_NORMAL
.createLabel(""));
// List of infos:
- int labelSize = -1;
- try {
- labelSize = Integer.parseInt(map
- .getString("CONTACT_DETAILS_LABEL_WIDTH"));
-
- } catch (NumberFormatException e) {
- e.printStackTrace();
- labelSize = -1;
- } catch (MissingResourceException e) {
- labelSize = -1;
- }
-
- String infoFormat = "";
- try {
- infoFormat = map.getString("CONTACT_DETAILS_INFO");
- } catch (MissingResourceException e) {
- e.printStackTrace();
- }
-
String[] infos = infoFormat.split("\\|");
for (String info : infos) {
// # - "=FIELD" will take the preferred value for this field
if (all) {
for (Data data : contact.getData(field)) {
if (data.isPreferred()) {
- infoPanel
- .addComponent(el.createLabel(StringUtils
- .padString(label, labelSize)
- + contact
- .getPreferredDataValue(field)));
+ infoPanel.addComponent(el
+ .createLabel(StringUtils.padString(
+ label, labelSize)
+ + data.toString()));
} else {
infoPanel
- .addComponent(UiColors.Element.VIEW_CONTACT_NORMAL.createLabel(StringUtils
- .padString(label, labelSize)
- + contact
- .getPreferredDataValue(field)));
+ .addComponent(UiColors.Element.VIEW_CONTACT_NORMAL
+ .createLabel(StringUtils
+ .padString(label,
+ labelSize)
+ + data.toString()));
}
}
} else {
+ String val = contact.getPreferredDataValue(field);
+ if (val == null)
+ val = "";
infoPanel.addComponent(el.createLabel(StringUtils
- .padString(label, labelSize)
- + contact.getPreferredDataValue(field)));
+ .padString(label, labelSize) + val));
}
} else {
String label = info;
String notes = contact.getPreferredDataValue("NOTE");
if (notes == null)
notes = "";
- note.setText(notes.replaceAll("\\\\n", "\n"));
+ note.setText(notes);
Data photo = contact.getPreferredData("PHOTO");
if (photo != null) {
TypeInfo encoding = null;
- for (int index = 0; index < photo.size(); index++) {
- TypeInfo info = photo.get(index);
+ for (TypeInfo info : photo) {
if (info.getName() != null) {
if (info.getName().equalsIgnoreCase("ENCODING"))
encoding = info;
&& encoding.getValue().equalsIgnoreCase("b")) {
try {
- image = ImageIO.read(new ByteArrayInputStream(
- DatatypeConverter.parseBase64Binary(photo
- .getValue())));
- image.toString();
+ image = StringUtils.toImage(photo.getValue());
} catch (Exception e) {
System.err.println("Cannot parse image for contact: "
+ contact.getPreferredDataValue("UID"));
} else {
// TODO: configure size?
int w = getSize().getColumns() - 40;
- int h = getSize().getRows() - 5;
+ int h = getSize().getRows() - 9;
if (w <= 0 || h <= 0)
return null;