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 com.googlecode.lanterna.input.KeyType;
@Override
public String getExitWarning() {
if (card != null && card.isDirty()) {
- return "Some of your contact information is not saved";
+ //TODO: save? [y/n] instead
+ return "Some of your contact information is not saved; ignore? [Y/N]";
}
+
return null;
}
List<KeyAction> actions = new LinkedList<KeyAction>();
// TODO del, save...
+ // TODO: remove
+ actions.add(new KeyAction(Mode.NONE, 'd', Trans.StringId.DUMMY) {
+ @Override
+ public boolean onAction() {
+ //TODO dummy action
+ int index = getSelectedIndex();
+ Contact c = card.getContacts().get(index);
+ c.updateFrom(c);
+ return false;
+ }
+ });
actions.add(new KeyAction(Mode.CONTACT_DETAILS, 'e',
Trans.StringId.KEY_ACTION_EDIT_CONTACT) {
@Override
@Override
public String getTitle() {
- // TODO Auto-generated method stub
+ if (card != null) {
+ return card.getName();
+ }
+
return null;
}
@Override
- protected String getLabel(int index, int width) {
+ protected List<TextPart> getLabel(int index, int width, boolean selected,
+ boolean focused) {
+ Contact c = card.getContacts().get(index);
+
+ 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;
+
+ width -= 2; // dirty mark space
+
// we could use: " ", "┃", "│"...
- return card.getContacts().get(index).toString(format, " ┃ ", width);
+ String[] array = c.toStringArray(format, "┃", " ", width);
+
+ List<TextPart> parts = new LinkedList<TextPart>();
+ if (c.isDirty()) {
+ parts.add(new TextPart(" ", el));
+ parts.add(new TextPart("*", elDirty));
+ } else {
+ parts.add(new TextPart(" ", elSep));
+ }
+
+ boolean separator = false;
+ for (String str : array) {
+ parts.add(new TextPart(str, (separator ? elSep : el)));
+ separator = !separator;
+ }
+
+ return parts;
}
private void switchFormat() {