X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2Ftui%2Fpanes%2FFileList.java;h=bfc7f8b393f7666c2aa9e68ab7a1a0ca32593df6;hb=a046fa49cdcaea2ce4eb9104387c66f915205f2d;hp=66e35ce2e43d9985507a149f2f4b8f09498cd2ac;hpb=296a0b75515b3a7424b98292c87cbbf2272b73f9;p=jvcard.git diff --git a/src/be/nikiroo/jvcard/tui/panes/FileList.java b/src/be/nikiroo/jvcard/tui/panes/FileList.java index 66e35ce..bfc7f8b 100644 --- a/src/be/nikiroo/jvcard/tui/panes/FileList.java +++ b/src/be/nikiroo/jvcard/tui/panes/FileList.java @@ -9,6 +9,7 @@ import java.util.List; import be.nikiroo.jvcard.Card; import be.nikiroo.jvcard.i18n.Trans; import be.nikiroo.jvcard.parsers.Format; +import be.nikiroo.jvcard.remote.Sync; import be.nikiroo.jvcard.tui.KeyAction; import be.nikiroo.jvcard.tui.KeyAction.DataType; import be.nikiroo.jvcard.tui.KeyAction.Mode; @@ -19,13 +20,10 @@ import be.nikiroo.jvcard.tui.UiColors.Element; import com.googlecode.lanterna.input.KeyType; public class FileList extends MainContentList { - private List files; + private List files; private List cards; - public FileList(List files) { - super(UiColors.Element.CONTACT_LINE, - UiColors.Element.CONTACT_LINE_SELECTED); - + public FileList(List files) { setFiles(files); } @@ -35,13 +33,13 @@ public class FileList extends MainContentList { * @param files * the new files */ - public void setFiles(List files) { + public void setFiles(List files) { clearItems(); this.files = files; cards = new ArrayList(); - for (File file : files) { - addItem(file.getName()); + for (String file : files) { + addItem(file); // TODO cards.add(null); } @@ -70,7 +68,11 @@ public class FileList extends MainContentList { if (cards.get(index) != null) count += cards.get(index).size(); - String name = files.get(index).getName(); + String name = files.get(index).replaceAll("\\\\", "/"); + int indexSl = name.lastIndexOf('/'); + if (indexSl >= 0) { + name = name.substring(indexSl + 1); + } name = StringUtils.sanitize(name, UiColors.getInstance().isUnicode()); @@ -103,18 +105,10 @@ public class FileList extends MainContentList { 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(".")) { - String tab[] = ext.split("\\."); - if (tab.length > 1 - && tab[tab.length - 1].equalsIgnoreCase("vcf")) { - format = Format.VCard21; - } - } + String file = files.get(index); + try { - Card card = new Card(file, format); + Card card = FileList.getCard(file); cards.set(index, card); invalidate(); @@ -130,8 +124,37 @@ public class FileList extends MainContentList { return actions; } - @Override - public Mode getMode() { - return Mode.FILE_LIST; + static private Card getCard(String input) throws IOException { + boolean remote = false; + Format format = Format.Abook; + String ext = input; + if (ext.contains(".")) { + String tab[] = ext.split("\\."); + if (tab.length > 1 && tab[tab.length - 1].equalsIgnoreCase("vcf")) { + format = Format.VCard21; + } + } + + if (input.contains("://")) { + format = Format.VCard21; + remote = true; + } + + Card card = null; + try { + if (remote) { + Sync sync = new Sync(input); + card = new Card(sync.getCache(), format); + card.setRemote(true); + sync.sync(card, false); + } else { + card = new Card(new File(input), format); + } + } catch (IOException ioe) { + ioe.printStackTrace(); + throw ioe; + } + + return card; } }