* include filters for Episode and Movie file types in Analyze panel

This commit is contained in:
Reinhard Pointner 2014-08-05 13:07:38 +00:00
parent 7ecb4cb146
commit def3605db8
4 changed files with 40 additions and 12 deletions

View File

@ -18,13 +18,12 @@ public class AnalyzePanel extends JComponent {
toolsPanel.setBorder(BorderFactory.createTitledBorder("Tools"));
setLayout(new MigLayout("insets dialog, gapx 50, fill"));
add(fileTreePanel, "grow, sizegroupx column");
add(toolsPanel, "grow, sizegroupx column");
addTool(new ExtractTool());
addTool(new SplitTool());
addTool(new TypeTool());
addTool(new SplitTool());
addTool(new AttributeTool());
putClientProperty("transferablePolicy", fileTreePanel.getTransferablePolicy());

View File

@ -30,7 +30,7 @@ class SplitTool extends Tool<TreeModel> {
private SpinnerNumberModel spinnerModel = new SpinnerNumberModel(4480, 0, Integer.MAX_VALUE, 100);
public SplitTool() {
super("Disks");
super("Parts");
JScrollPane treeScrollPane = new JScrollPane(tree);
treeScrollPane.setBorder(new SeparatorBorder(2, new Color(0, 0, 0, 90), GradientStyle.TOP_TO_BOTTOM, SeparatorBorder.Position.BOTTOM));

View File

@ -1,6 +1,8 @@
package net.filebot.ui.analyze;
import static java.util.Arrays.*;
import static java.util.Collections.*;
import static net.filebot.MediaTypes.*;
import static net.filebot.util.FileUtilities.*;
import java.io.File;
@ -37,7 +39,6 @@ class TypeTool extends Tool<TreeModel> {
super("Types");
setLayout(new MigLayout("insets 0, fill"));
JScrollPane treeScrollPane = new JScrollPane(tree);
treeScrollPane.setBorder(BorderFactory.createEmptyBorder());
@ -49,7 +50,7 @@ class TypeTool extends Tool<TreeModel> {
@Override
protected TreeModel createModelInBackground(File root) throws InterruptedException {
List<File> filesAndFolders = (root != null) ? listFiles(singleton(root), FILE_WALK_MAX_DEPTH, false, true, true) : new ArrayList<File>();
List<File> filesAndFolders = (root != null) ? listFiles(singleton(root), FILE_WALK_MAX_DEPTH, true, true, true) : new ArrayList<File>();
List<TreeNode> groups = new ArrayList<TreeNode>();
for (Entry<String, FileFilter> it : getMetaTypes().entrySet()) {
@ -74,20 +75,46 @@ class TypeTool extends Tool<TreeModel> {
public Map<String, FileFilter> getMetaTypes() {
Map<String, FileFilter> types = new LinkedHashMap<String, FileFilter>();
try {
types.put("Episode", new EpisodeFilter());
types.put("Movie", new MovieFilter());
types.put("Video", MediaTypes.VIDEO_FILES);
types.put("Disk Folder", MediaDetection.getDiskFolderFilter());
types.put("Subtitle", MediaTypes.SUBTITLE_FILES);
types.put("Audio", MediaTypes.AUDIO_FILES);
types.put("Archive", MediaTypes.ARCHIVE_FILES);
types.put("Verification", MediaTypes.VERIFICATION_FILES);
try {
types.put("Clutter", MediaDetection.getClutterFileFilter());
types.put("Disk Folder", MediaDetection.getDiskFolderFilter());
} catch (IOException e) {
Logger.getLogger(TypeTool.class.getName()).log(Level.WARNING, e.getMessage());
}
return types;
}
private static class EpisodeFilter implements FileFilter {
private final static long MAX_SIZE = 50 * MEGA;
@Override
public boolean accept(File file) {
return file.length() > MAX_SIZE && VIDEO_FILES.accept(file) && MediaDetection.isEpisode(file.getPath(), true);
}
}
private static class MovieFilter implements FileFilter {
private final static long MAX_SIZE = 500 * MEGA;
@Override
public boolean accept(File file) {
try {
return file.length() > MAX_SIZE && VIDEO_FILES.accept(file) && !MediaDetection.isEpisode(file.getPath(), true) && MediaDetection.matchMovieName(asList(file.getName(), file.getParent()), true, 0).size() > 0;
} catch (Exception e) {
return false;
}
}
}
@Override
protected void setModel(TreeModel model) {
tree.setModel(model);

View File

@ -647,7 +647,9 @@ public final class FileUtilities {
public static final long GIGA = 1024 * MEGA;
public static String formatSize(long size) {
if (size >= MEGA)
if (size >= GIGA)
return String.format("%,d GB", size / GIGA);
else if (size >= MEGA)
return String.format("%,d MB", size / MEGA);
else if (size >= KILO)
return String.format("%,d KB", size / KILO);