X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2Ftui%2Fpanes%2FFileList.java;h=636ec431a8e0935c7ff94b859d9f953adb014e9e;hb=f04d8b1c4c3ed29d4d23cc076f307ef455b2dcb6;hp=79f530e0604f38318d6b3283ce1dc75ce9530f88;hpb=9c8baf0c360173b864683176c567757429c4fb12;p=jvcard.git diff --git a/src/be/nikiroo/jvcard/tui/panes/FileList.java b/src/be/nikiroo/jvcard/tui/panes/FileList.java index 79f530e..636ec43 100644 --- a/src/be/nikiroo/jvcard/tui/panes/FileList.java +++ b/src/be/nikiroo/jvcard/tui/panes/FileList.java @@ -2,6 +2,7 @@ package be.nikiroo.jvcard.tui.panes; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -9,14 +10,17 @@ import be.nikiroo.jvcard.Card; import be.nikiroo.jvcard.i18n.Trans; import be.nikiroo.jvcard.parsers.Format; 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.StringUtils; +import be.nikiroo.jvcard.tui.UiColors; +import be.nikiroo.jvcard.tui.UiColors.Element; import com.googlecode.lanterna.input.KeyType; public class FileList extends MainContentList { private List files; + private List cards; public FileList(List files) { super(UiColors.Element.CONTACT_LINE, @@ -34,10 +38,11 @@ public class FileList extends MainContentList { public void setFiles(List files) { clearItems(); this.files = files; + cards = new ArrayList(); - // TODO for (File file : files) { addItem(file.getName()); + cards.add(null); } setSelectedIndex(0); @@ -49,10 +54,37 @@ public class FileList extends MainContentList { } @Override - public String getExitWarning() { - // TODO Auto-generated method stub - return null; - } + protected List getLabel(int index, int width, boolean selected, + boolean focused) { + // TODO: from ini file? + int SIZE_COL_1 = 3; + + Element el = (focused && selected) ? Element.CONTACT_LINE_SELECTED + : Element.CONTACT_LINE; + Element elSep = (focused && selected) ? Element.CONTACT_LINE_SEPARATOR_SELECTED + : Element.CONTACT_LINE_SEPARATOR; + + List parts = new LinkedList(); + + String count = ""; + if (cards.get(index) != null) + count += cards.get(index).size(); + + String name = files.get(index).getName(); + + name = StringUtils.sanitize(name, UiColors.getInstance().isUnicode()); + + count = " " + StringUtils.padString(count, SIZE_COL_1) + " "; + name = " " + + StringUtils.padString(name, width - SIZE_COL_1 + - getSeparator().length()) + " "; + + parts.add(new TextPart(count, el)); + parts.add(new TextPart(getSeparator(), elSep)); + parts.add(new TextPart(name, el)); + + return parts; + }; @Override public List getKeyBindings() { @@ -63,7 +95,15 @@ public class FileList extends MainContentList { Trans.StringId.KEY_ACTION_VIEW_CARD) { @Override public Object getObject() { - File file = files.get(getSelectedIndex()); + int index = getSelectedIndex(); + + if (index < 0 || index >= cards.size()) + return null; + + if (cards.get(index) != null) + return cards.get(index); + + File file = files.get(index); Format format = Format.Abook; String ext = file.getName(); if (ext.contains(".")) { @@ -74,7 +114,12 @@ public class FileList extends MainContentList { } } try { - return new Card(file, format); + Card card = new Card(file, format); + cards.set(index, card); + + invalidate(); + + return card; } catch (IOException ioe) { ioe.printStackTrace(); return null; @@ -84,16 +129,4 @@ public class FileList extends MainContentList { return actions; } - - @Override - public Mode getMode() { - return Mode.FILE_LIST; - } - - @Override - public String getTitle() { - // TODO Auto-generated method stub - return null; - } - }