Fix FN when empty (with a configurable option) + some i18n
[jvcard.git] / src / be / nikiroo / jvcard / tui / panes / ContactDetails.java
index 1d6beb9998bf01b461fb4590746edf1bb4d13868..aa838cb6d9339cc8d57a6e91dbefe743d827ae22 100644 (file)
@@ -1,15 +1,11 @@
 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;
@@ -39,10 +35,33 @@ public class ContactDetails extends MainContent {
        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);
@@ -86,36 +105,12 @@ public class ContactDetails extends MainContent {
                        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
@@ -191,8 +186,7 @@ public class ContactDetails extends MainContent {
                        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;
@@ -205,10 +199,7 @@ public class ContactDetails extends MainContent {
                                                && 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"));