import java.util.List;
import be.nikiroo.jvcard.Card;
+import be.nikiroo.jvcard.Contact;
import be.nikiroo.jvcard.i18n.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;
-import be.nikiroo.jvcard.tui.panes.MainContentList.TextPart;
import com.googlecode.lanterna.input.KeyType;
setSelectedIndex(0);
}
+ @Override
+ public void refreshData() {
+ int index = getSelectedIndex();
+ setCard(card);
+ setSelectedIndex(index);
+ super.refreshData();
+ }
+
@Override
public String getExitWarning() {
if (card != null && card.isDirty()) {
- return "Some of your contact information is not saved";
+ return "Ignore unsaved changes? [Y/N]";
}
+
return null;
}
public List<KeyAction> getKeyBindings() {
List<KeyAction> actions = new LinkedList<KeyAction>();
- // TODO del, save...
+ // TODO add, del, save...
actions.add(new KeyAction(Mode.CONTACT_DETAILS, 'e',
Trans.StringId.KEY_ACTION_EDIT_CONTACT) {
@Override
public Object getObject() {
- int index = getSelectedIndex();
- return card.getContacts().get(index);
+ return getSelectedContact();
+ }
+ });
+ 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() {
+ 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() {
@Override
public String getTitle() {
- // TODO Auto-generated method stub
+ if (card != null) {
+ return card.getName();
+ }
+
return null;
}
boolean focused) {
List<TextPart> parts = new LinkedList<TextPart>();
+ 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;
Element elSep = (focused && selected) ? Element.CONTACT_LINE_SEPARATOR_SELECTED
: Element.CONTACT_LINE_SEPARATOR;
+ Element elDirty = (focused && selected) ? Element.CONTACT_LINE_DIRTY_SELECTED
+ : Element.CONTACT_LINE_DIRTY;
- // TODO: width/separator to check
- String separator = " ┃ ";
- width -= (format.split("\\|").length + 1) * separator.length();
- String[] array = card.getContacts().get(index).toStringArray(format,
+ width -= 2; // dirty mark space
+
+ String[] array = contact.toStringArray(format, getSeparator(), " ",
width);
- // we could use: " ", "┃", "│"...
- for (String str : array) {
- parts.add(new TextPart(str, el));
- parts.add(new TextPart(separator, elSep));
+ if (contact.isDirty()) {
+ parts.add(new TextPart(" ", el));
+ parts.add(new TextPart("*", elDirty));
+ } else {
+ parts.add(new TextPart(" ", elSep));
}
- if (parts.size() > 0)
- parts.remove(parts.get(parts.size() - 1));
+ boolean separator = false;
+ for (String str : array) {
+ parts.add(new TextPart(str, (separator ? elSep : el)));
+ separator = !separator;
+ }
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;