X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2Ftui%2Fpanes%2FContactList.java;h=7d1037006c13ea2b0998ca3c40976c8d8049df27;hb=296a0b75515b3a7424b98292c87cbbf2272b73f9;hp=370aba7cd5adf2e98177ef2d8cc86701c250c15d;hpb=0b0b2b0ff1f5e21f7b0feb955b4b54855fb3d508;p=jvcard.git diff --git a/src/be/nikiroo/jvcard/tui/panes/ContactList.java b/src/be/nikiroo/jvcard/tui/panes/ContactList.java index 370aba7..7d10370 100644 --- a/src/be/nikiroo/jvcard/tui/panes/ContactList.java +++ b/src/be/nikiroo/jvcard/tui/panes/ContactList.java @@ -52,13 +52,20 @@ public class ContactList extends MainContentList { setSelectedIndex(0); } + @Override + public void refreshData() { + int index = getSelectedIndex(); + setCard(card); + setSelectedIndex(index); + super.refreshData(); + } + @Override public String getExitWarning() { if (card != null && card.isDirty()) { - //TODO: save? [y/n] instead - return "Some of your contact information is not saved; ignore? [Y/N]"; + return "Ignore unsaved changes? [Y/N]"; } - + return null; } @@ -66,35 +73,36 @@ public class ContactList extends MainContentList { public List getKeyBindings() { List actions = new LinkedList(); - // TODO del, save... - // TODO: remove - actions.add(new KeyAction(Mode.NONE, 'd', Trans.StringId.DUMMY) { + // TODO add + actions.add(new KeyAction(Mode.CONTACT_DETAILS, 'e', + Trans.StringId.KEY_ACTION_EDIT_CONTACT) { @Override - public boolean onAction() { - //TODO dummy action - int index = getSelectedIndex(); - Contact c = card.getContacts().get(index); - c.updateFrom(c); - return false; + public Object getObject() { + return getSelectedContact(); } }); - actions.add(new KeyAction(Mode.CONTACT_DETAILS, 'e', - Trans.StringId.KEY_ACTION_EDIT_CONTACT) { + actions.add(new KeyAction(Mode.DELETE_CONTACT, 'd', + Trans.StringId.KEY_ACTION_DELETE_CONTACT) { + @Override + public Object getObject() { + return getSelectedContact(); + } + }); + actions.add(new KeyAction(Mode.SAVE_CARD, 's', + Trans.StringId.KEY_ACTION_SAVE_CARD) { @Override public Object getObject() { - int index = getSelectedIndex(); - return card.getContacts().get(index); + return card; } }); actions.add(new KeyAction(Mode.CONTACT_DETAILS, KeyType.Enter, Trans.StringId.KEY_ACTION_VIEW_CONTACT) { @Override public Object getObject() { - int index = getSelectedIndex(); - return card.getContacts().get(index); + return getSelectedContact(); } }); - actions.add(new KeyAction(Mode.SWICTH_FORMAT, KeyType.Tab, + actions.add(new KeyAction(Mode.NONE, KeyType.Tab, Trans.StringId.KEY_ACTION_SWITCH_FORMAT) { @Override public boolean onAction() { @@ -128,7 +136,14 @@ public class ContactList extends MainContentList { @Override protected List getLabel(int index, int width, boolean selected, boolean focused) { - Contact c = card.getContacts().get(index); + List parts = new LinkedList(); + + Contact contact = null; + if (index > -1 && index < card.size()) + contact = card.get(index); + + if (contact == null) + return parts; Element el = (focused && selected) ? Element.CONTACT_LINE_SELECTED : Element.CONTACT_LINE; @@ -139,11 +154,10 @@ public class ContactList extends MainContentList { width -= 2; // dirty mark space - // we could use: " ", "┃", "│"... - String[] array = c.toStringArray(format, "┃", " ", width); + String[] array = contact.toStringArray(format, getSeparator(), " ", + width, UiColors.getInstance().isUnicode()); - List parts = new LinkedList(); - if (c.isDirty()) { + if (contact.isDirty()) { parts.add(new TextPart(" ", el)); parts.add(new TextPart("*", elDirty)); } else { @@ -159,6 +173,18 @@ public class ContactList extends MainContentList { return parts; } + /** + * Return the currently selected {@link Contact}. + * + * @return the currently selected {@link Contact} + */ + private Contact getSelectedContact() { + int index = getSelectedIndex(); + if (index > -1 && index < card.size()) + return card.get(index); + return null; + } + private void switchFormat() { if (formats.size() == 0) return;