diff --git a/forge-gui-mobile/src/forge/assets/FSkinImage.java b/forge-gui-mobile/src/forge/assets/FSkinImage.java index d80a6379569..e8838e03401 100644 --- a/forge-gui-mobile/src/forge/assets/FSkinImage.java +++ b/forge-gui-mobile/src/forge/assets/FSkinImage.java @@ -147,6 +147,7 @@ public enum FSkinImage implements FImage { CLOSE (FSkinProp.ICO_CLOSE, SourceFile.ICONS), LIST (FSkinProp.ICO_LIST, SourceFile.ICONS), CARD_IMAGE (FSkinProp.ICO_CARD_IMAGE, SourceFile.ICONS), + FOLDER (FSkinProp.ICO_FOLDER, SourceFile.ICONS), UNKNOWN (FSkinProp.ICO_UNKNOWN, SourceFile.ICONS), LOGO (FSkinProp.ICO_LOGO, SourceFile.ICONS), FLIPCARD (FSkinProp.ICO_FLIPCARD, SourceFile.ICONS), diff --git a/forge-gui-mobile/src/forge/toolbox/FFileChooser.java b/forge-gui-mobile/src/forge/toolbox/FFileChooser.java index 1d3d40e0b2f..d8f4d554d86 100644 --- a/forge-gui-mobile/src/forge/toolbox/FFileChooser.java +++ b/forge-gui-mobile/src/forge/toolbox/FFileChooser.java @@ -1,6 +1,7 @@ package forge.toolbox; import java.io.File; +import java.io.FilenameFilter; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment; @@ -9,6 +10,7 @@ import forge.Forge; import forge.Forge.Graphics; import forge.assets.FSkinColor; import forge.assets.FSkinFont; +import forge.assets.FSkinImage; import forge.toolbox.FEvent; import forge.toolbox.FEvent.FEventHandler; import forge.util.Callback; @@ -69,7 +71,17 @@ public class FFileChooser extends FDialog { private void refreshFileList() { if (currentDir != null) { - lstFiles.setListData(currentDir.listFiles()); + FilenameFilter filter = null; + if (choiceType == ChoiceType.GetDirectory) { + //don't list files if getting directory + filter = new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return new File(dir, name).isDirectory(); + } + }; + } + lstFiles.setListData(currentDir.listFiles(filter)); } else { lstFiles.setListData(File.listRoots()); @@ -132,8 +144,12 @@ public class FFileChooser extends FDialog { @Override public void drawValue(Graphics g, Integer index, File value, FSkinFont font, FSkinColor foreColor, boolean pressed, float x, float y, float w, float h) { - //TODO: Draw icon for folder vs. file - g.drawText(value.toString(), font, foreColor, x, y, w, h, false, HAlignment.LEFT, true); + if (value.isDirectory()) { + float iconSize = h; + g.drawImage(FSkinImage.FOLDER, x, y + (h - iconSize) / 2, iconSize, iconSize); + x += iconSize + FList.PADDING; + } + g.drawText(value.getName(), font, foreColor, x, y, w, h, false, HAlignment.LEFT, true); } }); } diff --git a/forge-gui/res/skins/default/sprite_icons.png b/forge-gui/res/skins/default/sprite_icons.png index 5d8fd4f1e83..ef7dac35ef2 100644 Binary files a/forge-gui/res/skins/default/sprite_icons.png and b/forge-gui/res/skins/default/sprite_icons.png differ diff --git a/forge-gui/src/main/java/forge/assets/FSkinProp.java b/forge-gui/src/main/java/forge/assets/FSkinProp.java index 595f6db5043..c130eea8f33 100644 --- a/forge-gui/src/main/java/forge/assets/FSkinProp.java +++ b/forge-gui/src/main/java/forge/assets/FSkinProp.java @@ -204,6 +204,7 @@ public enum FSkinProp { ICO_CLOSE (new int[] {640, 640, 20, 20}, PropType.ICON), ICO_LIST (new int[] {640, 660, 20, 20}, PropType.ICON), ICO_CARD_IMAGE (new int[] {660, 660, 20, 20}, PropType.ICON), + ICO_FOLDER (new int[] {640, 680, 20, 20}, PropType.ICON), ICO_UNKNOWN (new int[] {0, 720, 80, 80}, PropType.ICON), ICO_LOGO (new int[] {480, 0, 200, 200}, PropType.ICON), ICO_FLIPCARD (new int[] {400, 0, 80, 120}, PropType.ICON),