import be.nikiroo.jvcard.Card;
import be.nikiroo.jvcard.Contact;
-import be.nikiroo.jvcard.i18n.Trans;
+import be.nikiroo.jvcard.Data;
+import be.nikiroo.jvcard.launcher.Main;
+import be.nikiroo.jvcard.resources.Bundles;
+import be.nikiroo.jvcard.resources.Trans;
import be.nikiroo.jvcard.tui.KeyAction;
-import be.nikiroo.jvcard.tui.UiColors;
import be.nikiroo.jvcard.tui.KeyAction.DataType;
import be.nikiroo.jvcard.tui.KeyAction.Mode;
import be.nikiroo.jvcard.tui.UiColors.Element;
private List<Contact> contacts;
private String filter;
- private List<String> formats = new LinkedList<String>();
- private int selectedFormat = -1;
- private String format = "";
+ private List<String> formats;
+ private int selectedFormat;
+ private String format;
public ContactList(Card card) {
- super(UiColors.Element.CONTACT_LINE,
- UiColors.Element.CONTACT_LINE_SELECTED);
+ formats = new LinkedList<String>();
+ for (String format : Bundles.getBundle("display")
+ .getString("CONTACT_LIST_FORMAT").split(",")) {
+ formats.add(format);
+ }
- // TODO: should get that in an INI file
- formats.add("NICKNAME@3|FN@+|EMAIL@30");
- formats.add("FN@+|EMAIL@40");
+ selectedFormat = -1;
switchFormat();
setCard(card);
this.contacts = new LinkedList<Contact>();
if (card != null) {
- for (int i = 0; i < card.getContacts().size(); i++) {
- Contact c = card.getContacts().get(i);
+ for (Contact c : card) {
if (filter == null
- || c.toString(format).toLowerCase()
+ || c.toString(format, "|").toLowerCase()
.contains(filter.toLowerCase())) {
- addItem("[contact line]");
+ addItem("x");
contacts.add(c);
}
}
public List<KeyAction> getKeyBindings() {
List<KeyAction> actions = new LinkedList<KeyAction>();
- // TODO add
- actions.add(new KeyAction(Mode.CONTACT_DETAILS_RAW, 'e',
- Trans.StringId.KEY_ACTION_EDIT_CONTACT) {
+ // TODO ui
+ actions.add(new KeyAction(Mode.ASK_USER, 'a',
+ Trans.StringId.KEY_ACTION_ADD) {
@Override
public Object getObject() {
- return getSelectedContact();
+ return card;
+ }
+
+ @Override
+ public String getQuestion() {
+ return Main.trans(Trans.StringId.ASK_USER_CONTACT_NAME);
+ }
+
+ @Override
+ public String callback(String answer) {
+ if (answer.length() > 0) {
+ List<Data> datas = new LinkedList<Data>();
+ datas.add(new Data(null, "FN", answer, null));
+ getCard().add(new Contact(datas));
+ addItem("x");
+ }
+
+ return null;
}
});
actions.add(new KeyAction(Mode.ASK_USER_KEY, 'd',
@Override
public String getQuestion() {
- // TODO i18n
- return "Delete contact? [Y/N]";
+ Contact contact = getSelectedContact();
+ String contactName = "null";
+ if (contact != null)
+ contactName = "" + contact.getPreferredDataValue("FN");
+
+ return Main.trans(Trans.StringId.CONFIRM_USER_DELETE_CONTACT,
+ contactName);
}
@Override
if (answer.equalsIgnoreCase("y")) {
Contact contact = getSelectedContact();
if (contact != null && contact.delete()) {
+ removeItem("x");
return null;
}
- // TODO i18n
- return "Cannot delete contact";
+ String contactName = "null";
+ if (contact != null)
+ contactName = "" + contact.getPreferredDataValue("FN");
+
+ return Main.trans(Trans.StringId.ERR_CANNOT_DELETE_CONTACT,
+ contactName);
}
return null;
width -= 2; // dirty mark space
String[] array = contact.toStringArray(format, getSeparator(), " ",
- width, UiColors.getInstance().isUnicode());
+ width, Main.isUnicode());
if (contact.isDirty()) {
parts.add(new TextPart(" ", el));