From 7ba5bb52d9726cf8d8bd1ae809973df737247fc8 Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Tue, 10 Apr 2012 01:19:34 +0000 Subject: [PATCH] * don't clean up part identifier from title for single episodes * remember manual input --- .../filebot/format/MediaBindingBean.java | 6 ++++++ .../filebot/ui/rename/EpisodeListMatcher.java | 14 ++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/source/net/sourceforge/filebot/format/MediaBindingBean.java b/source/net/sourceforge/filebot/format/MediaBindingBean.java index 3cf72800..8348b115 100644 --- a/source/net/sourceforge/filebot/format/MediaBindingBean.java +++ b/source/net/sourceforge/filebot/format/MediaBindingBean.java @@ -105,6 +105,12 @@ public class MediaBindingBean { @Define("t") public String getTitle() { + // single episode format + if (getEpisodes().size() == 1) { + return getEpisode().getTitle(); + } + + // multi-episode format Set title = new LinkedHashSet(); for (Episode it : getEpisodes()) { title.add(removeTrailingBrackets(it.getTitle())); diff --git a/source/net/sourceforge/filebot/ui/rename/EpisodeListMatcher.java b/source/net/sourceforge/filebot/ui/rename/EpisodeListMatcher.java index 2d155665..0a5116bb 100644 --- a/source/net/sourceforge/filebot/ui/rename/EpisodeListMatcher.java +++ b/source/net/sourceforge/filebot/ui/rename/EpisodeListMatcher.java @@ -185,6 +185,7 @@ class EpisodeListMatcher implements AutoCompleteMatcher { // remember user decisions and only bother user once final Map selectionMemory = new TreeMap(CommonSequenceMatcher.getLenientCollator(Locale.ROOT)); + final Map> inputMemory = new TreeMap>(CommonSequenceMatcher.getLenientCollator(Locale.ROOT)); // detect series names and create episode list fetch tasks for (Entry, Set> sameSeriesGroup : mapSeriesNamesByFiles(mediaFiles, locale).entrySet()) { @@ -204,7 +205,7 @@ class EpisodeListMatcher implements AutoCompleteMatcher { @Override public List> call() throws Exception { - return matchEpisodeSet(batchSet, queries, sortOrder, locale, autodetection, selectionMemory, parent); + return matchEpisodeSet(batchSet, queries, sortOrder, locale, autodetection, selectionMemory, inputMemory, parent); } }); } @@ -255,7 +256,8 @@ class EpisodeListMatcher implements AutoCompleteMatcher { } - public List> matchEpisodeSet(final List files, Collection queries, SortOrder sortOrder, Locale locale, boolean autodetection, Map selectionMemory, Component parent) throws Exception { + public List> matchEpisodeSet(final List files, Collection queries, SortOrder sortOrder, Locale locale, boolean autodetection, Map selectionMemory, + Map> inputMemory, Component parent) throws Exception { Set episodes = emptySet(); // detect series name and fetch episode list @@ -280,8 +282,12 @@ class EpisodeListMatcher implements AutoCompleteMatcher { } List input = emptyList(); - synchronized (this) { - input = showMultiValueInputDialog("Enter series name:", suggestion, files.get(0).getParentFile().getName(), parent); + synchronized (inputMemory) { + input = inputMemory.get(suggestion); + if (input == null || suggestion == null || suggestion.isEmpty()) { + input = showMultiValueInputDialog("Enter series name:", suggestion, files.get(0).getParentFile().getName(), parent); + inputMemory.put(suggestion, input); + } } if (input.size() > 0) {