package org.lodder.subtools.multisubdownloader.settings; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; import org.lodder.subtools.multisubdownloader.Messages; import org.lodder.subtools.multisubdownloader.gui.extra.MemoryFolderChooser; import org.lodder.subtools.multisubdownloader.lib.library.LibraryActionType; import org.lodder.subtools.multisubdownloader.lib.library.LibraryOtherFileActionType; import org.lodder.subtools.multisubdownloader.settings.model.LibrarySettings; import org.lodder.subtools.multisubdownloader.settings.model.Settings; import org.lodder.subtools.multisubdownloader.settings.model.SettingsExcludeItem; import org.lodder.subtools.multisubdownloader.settings.model.SettingsExcludeType; import org.lodder.subtools.multisubdownloader.settings.model.SettingsProcessEpisodeSource; import org.lodder.subtools.multisubdownloader.settings.model.UpdateCheckPeriod; import org.lodder.subtools.sublibrary.settings.MappingSettingsControl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SettingsControl { private Preferences preferences; private Settings settings; private MappingSettingsControl mappingSettingsCtrl; private static final String BACKING_STORE_AVAIL = "BackingStoreAvail"; private static final Logger LOGGER = LoggerFactory.getLogger(SettingsControl.class); public SettingsControl() { if (!backingStoreAvailable()) LOGGER.error("Unable to store preferences, used debug for reason"); preferences = Preferences.userRoot().node("MultiSubDownloader"); settings = new Settings(); mappingSettingsCtrl = new MappingSettingsControl(preferences); load(); } private static boolean backingStoreAvailable() { Preferences prefs = Preferences.userRoot().node("MultiSubDownloader"); try { boolean oldValue = prefs.getBoolean(BACKING_STORE_AVAIL, false); prefs.putBoolean(BACKING_STORE_AVAIL, !oldValue); prefs.flush(); } catch (BackingStoreException e) { LOGGER.error("BackingStore is not available, settings could not be loaded using defaults", e); return false; } return true; } public void store() { try { // clean up preferences.clear(); // EpisodeLibrary storeLibrarySerie(); // MovieLibrary storeLibraryMovie(); // Settings storeDefaultIncomingFolder(); mappingSettingsCtrl.setMappingSettings(settings.getMappingSettings()); mappingSettingsCtrl.store(); storeExcludeSettings(); storeProxySettings(); preferences.putBoolean("OptionsAlwaysConfirm", settings.isOptionsAlwaysConfirm()); preferences.putBoolean("OptionsMinAutomaticSelection", settings.isOptionsMinAutomaticSelection()); preferences.putInt("OptionsMinAutomaticSelectionValue", settings.getOptionsMinAutomaticSelectionValue()); preferences.putBoolean("OptionSubtitleExactMatch", settings.isOptionSubtitleExactMatch()); preferences.putBoolean("OptionSubtitleKeywordMatch", settings.isOptionSubtitleKeywordMatch()); preferences.putBoolean("OptionSubtitleExcludeHearingImpaired", settings.isOptionSubtitleExcludeHearingImpaired()); preferences.putBoolean("OptionsShowOnlyFound", settings.isOptionsShowOnlyFound()); preferences.putBoolean("OptionsStopOnSearchError", settings.isOptionsStopOnSearchError()); preferences.putBoolean("OptionRecursive", settings.isOptionRecursive()); preferences.putBoolean("AutoUpdateMapping", settings.isAutoUpdateMapping()); preferences.put("ProcessEpisodeSource", settings.getProcessEpisodeSource().toString()); preferences.put("UpdateCheckPeriod", settings.getUpdateCheckPeriod().toString()); if (MemoryFolderChooser.getInstance().getMemory() != null) preferences.put("LastOutputDir", MemoryFolderChooser.getInstance().getMemory() .getAbsolutePath()); storeScreenSettings(); storeSerieSourcesSettings(); storeLocalSourcesFolders(); storeDefaultSelectionSettings(); } catch (BackingStoreException e) { LOGGER.error(e.getMessage(), e); } } private void storeScreenSettings() { preferences.putBoolean("ScreenHideEpisode", settings.getScreenSettings().isHideEpisode()); preferences.putBoolean("ScreenHideFilename", settings.getScreenSettings().isHideFilename()); preferences.putBoolean("ScreenHideSeason", settings.getScreenSettings().isHideSeason()); preferences.putBoolean("ScreenHideTitle", settings.getScreenSettings().isHideTitle()); preferences.putBoolean("ScreenHideType", settings.getScreenSettings().isHideType()); preferences.putBoolean("ScreenHideWIP", settings.getScreenSettings().isHideWIP()); } private void storeDefaultIncomingFolder() { int last; last = 0; for (int i = 0; i < settings.getDefaultIncomingFolders().size(); i++) { LOGGER.trace("SettingsControl, storeDefaultIncomingFolder(), storing {}", settings.getDefaultIncomingFolders().get(i).getAbsolutePath()); preferences.put("GeneralDefaultIncomingFolder" + i, settings.getDefaultIncomingFolders().get(i).getAbsolutePath()); last++; } LOGGER.trace("SettingsControl, storeDefaultIncomingFolder(), # stored [{}] DefaultIncomingFolders", last); preferences.putInt("lastDefaultIncomingFolder", last); } private void storeLocalSourcesFolders() { int last; last = 0; for (int i = 0; i < settings.getLocalSourcesFolders().size(); i++) { LOGGER.trace("SettingsControl, storeLocalSourcesFolders(), storing {}", settings.getLocalSourcesFolders().get(i).getAbsolutePath()); preferences.put("LocalSubtitlesSourcesFolders" + i, settings.getLocalSourcesFolders().get(i) .getAbsolutePath()); last++; } LOGGER.trace("SettingsControl, storeLocalSourcesFolders(), # stored [{}] LocalSourcesFolders", last); preferences.putInt("lastLocalSubtitlesSourcesFolder", last); } private void storeProxySettings() { preferences.putBoolean("generalProxyEnabled", settings.isGeneralProxyEnabled()); preferences.put("generalProxyHost", settings.getGeneralProxyHost()); preferences.putInt("generalProxyPort", settings.getGeneralProxyPort()); updateProxySettings(); } private void storeLibrarySerie() { preferences.put("EpisodeLibraryBackupSubtitlePath", settings.getEpisodeLibrarySettings() .getLibraryBackupSubtitlePath().getAbsolutePath()); preferences.putBoolean("EpisodeLibraryBackupSubtitle", settings.getEpisodeLibrarySettings() .isLibraryBackupSubtitle()); preferences.putBoolean("EpisodeLibraryBackupUseWebsiteFileName", settings .getEpisodeLibrarySettings().isLibraryBackupUseWebsiteFileName()); preferences.put("EpisodeLibraryAction", settings.getEpisodeLibrarySettings().getLibraryAction() .toString()); preferences.putBoolean("EpisodeLibraryUseTVDBNaming", settings.getEpisodeLibrarySettings() .isLibraryUseTVDBNaming()); preferences.putBoolean("EpisodeLibraryReplaceChars", settings.getEpisodeLibrarySettings() .isLibraryReplaceChars()); preferences.put("EpisodeLibraryOtherFileAction", settings.getEpisodeLibrarySettings() .getLibraryOtherFileAction().toString()); if (settings.getEpisodeLibrarySettings().getLibraryFolder() != null) preferences.put("EpisodeLibraryFolder", settings.getEpisodeLibrarySettings() .getLibraryFolder().getAbsolutePath()); preferences.put("EpisodeLibraryStructure", settings.getEpisodeLibrarySettings() .getLibraryFolderStructure()); preferences.putBoolean("EpisodeLibraryRemoveEmptyFolders", settings.getEpisodeLibrarySettings() .isLibraryRemoveEmptyFolders()); preferences.put("EpisodeLibraryFilename", settings.getEpisodeLibrarySettings() .getLibraryFilenameStructure()); preferences.putBoolean("EpisodeLibraryReplaceSpace", settings.getEpisodeLibrarySettings() .isLibraryFilenameReplaceSpace()); preferences.put("EpisodeLibraryReplacingSign", settings.getEpisodeLibrarySettings() .getLibraryFilenameReplacingSpaceSign()); preferences.putBoolean("EpisodeLibraryFolderReplaceSpace", settings.getEpisodeLibrarySettings() .isLibraryFolderReplaceSpace()); preferences.put("EpisodeLibraryFolderReplacingSign", settings.getEpisodeLibrarySettings() .getLibraryFolderReplacingSpaceSign()); preferences.putBoolean("EpisodeLibraryIncludeLanguageCode", settings .getEpisodeLibrarySettings().isLibraryIncludeLanguageCode()); preferences.put("EpisodeLibraryDefaultNlText", settings.getEpisodeLibrarySettings() .getDefaultNlText()); preferences.put("EpisodeLibraryDefaultEnText", settings.getEpisodeLibrarySettings() .getDefaultEnText()); } private void storeLibraryMovie() { preferences.put("MovieLibraryBackupSubtitlePath", settings.getMovieLibrarySettings() .getLibraryBackupSubtitlePath().getAbsolutePath()); preferences.putBoolean("MovieLibraryBackupSubtitle", settings.getMovieLibrarySettings() .isLibraryBackupSubtitle()); preferences.putBoolean("MovieLibraryBackupUseWebsiteFileName", settings .getMovieLibrarySettings().isLibraryBackupUseWebsiteFileName()); preferences.put("MovieLibraryAction", settings.getMovieLibrarySettings().getLibraryAction() .toString()); preferences.putBoolean("MovieLibraryUseTVDBNaming", settings.getMovieLibrarySettings() .isLibraryUseTVDBNaming()); preferences.putBoolean("MovieLibraryReplaceChars", settings.getMovieLibrarySettings() .isLibraryReplaceChars()); preferences.put("MovieLibraryOtherFileAction", settings.getMovieLibrarySettings() .getLibraryOtherFileAction().toString()); if (settings.getMovieLibrarySettings().getLibraryFolder() != null) preferences.put("MovieLibraryFolder", settings.getMovieLibrarySettings().getLibraryFolder() .getAbsolutePath()); preferences.put("MovieLibraryStructure", settings.getMovieLibrarySettings() .getLibraryFolderStructure()); preferences.putBoolean("MovieLibraryRemoveEmptyFolders", settings.getMovieLibrarySettings() .isLibraryRemoveEmptyFolders()); preferences.put("MovieLibraryFilename", settings.getMovieLibrarySettings() .getLibraryFilenameStructure()); preferences.putBoolean("MovieLibraryReplaceSpace", settings.getMovieLibrarySettings() .isLibraryFilenameReplaceSpace()); preferences.put("MovieLibraryReplacingSign", settings.getMovieLibrarySettings() .getLibraryFilenameReplacingSpaceSign()); preferences.putBoolean("MovieLibraryFolderReplaceSpace", settings.getMovieLibrarySettings() .isLibraryFolderReplaceSpace()); preferences.put("MovieLibraryFolderReplacingSign", settings.getMovieLibrarySettings() .getLibraryFolderReplacingSpaceSign()); preferences.putBoolean("MovieLibraryIncludeLanguageCode", settings.getMovieLibrarySettings() .isLibraryIncludeLanguageCode()); preferences.put("MovieLibraryDefaultNlText", settings.getMovieLibrarySettings().getDefaultNlText()); preferences.put("MovieLibraryDefaultEnText", settings.getMovieLibrarySettings().getDefaultEnText()); } private void storeExcludeSettings() { int last; last = 0; for (int i = 0; i < settings.getExcludeList().size(); i++) { preferences.put("ExcludeDescription" + i, settings.getExcludeList().get(i).getDescription()); preferences.put("ExcludeType" + i, settings.getExcludeList().get(i).getType().toString()); last++; } preferences.putInt("lastItemExclude", last); } private void storeSerieSourcesSettings() { preferences.putBoolean("loginAddic7edEnabled", settings.isLoginAddic7edEnabled()); preferences.put("loginAddic7edUsername", settings.getLoginAddic7edUsername()); preferences.put("loginAddic7edPassword", settings.getLoginAddic7edPassword()); preferences.putBoolean("serieSourceAddic7ed", settings.isSerieSourceAddic7ed()); preferences.putBoolean("serieSourceLocal", settings.isSerieSourceLocal()); preferences.putBoolean("serieSourceOpensubtitles", settings.isSerieSourceOpensubtitles()); preferences.putBoolean("serieSourcePodnapisi", settings.isSerieSourcePodnapisi()); preferences.putBoolean("serieSourceTvSubtitles", settings.isSerieSourceTvSubtitles()); preferences.putBoolean("serieSourceSubsMax", settings.isSerieSourceSubsMax()); } public void load() { // settings settings.setLastOutputDir(new File(preferences.get("LastOutputDir", ""))); settings.setOptionsAlwaysConfirm(preferences.getBoolean("OptionsAlwaysConfirm", false)); settings.setOptionsMinAutomaticSelection(preferences.getBoolean("OptionsMinAutomaticSelection", false)); settings.setOptionsMinAutomaticSelectionValue(preferences.getInt( "OptionsMinAutomaticSelectionValue", 0)); settings.setOptionSubtitleExactMatch(preferences.getBoolean("OptionSubtitleExactMatch", true)); settings.setOptionSubtitleKeywordMatch(preferences.getBoolean("OptionSubtitleKeywordMatch", true)); settings.setOptionSubtitleExcludeHearingImpaired(preferences.getBoolean( "OptionSubtitleExcludeHearingImpaired", false)); settings.setOptionsShowOnlyFound(preferences.getBoolean("OptionsShowOnlyFound", false)); settings.setOptionsStopOnSearchError(preferences.getBoolean("OptionsStopOnSearchError", false)); settings.setOptionRecursive(preferences.getBoolean("OptionRecursive", false)); settings.setAutoUpdateMapping(preferences.getBoolean("AutoUpdateMapping", false)); settings.setProcessEpisodeSource(SettingsProcessEpisodeSource.valueOf(preferences.get( "ProcessEpisodeSource", SettingsProcessEpisodeSource.TVDB.toString()))); settings.setUpdateCheckPeriod(UpdateCheckPeriod.valueOf(preferences.get("UpdateCheckPeriod", UpdateCheckPeriod.WEEKLY.toString()))); // GeneralDefaultIncomingFolders loadGeneralDefaultIncomingFolders(); // Serie loadLibrarySerie(); // movie loadLibraryMovie(); // mapping mappingSettingsCtrl.load(); settings.setMappingSettings(mappingSettingsCtrl.getMappingSettings()); // exclude settings loadExcludeSettings(); // proxy settings loadProxySettings(); loadScreenSettings(); loadSerieSourcesSettings(); loadLocalSourcesFolders(); loadDefaultSelectionSettings(); } private void loadLocalSourcesFolders() { int last; last = preferences.getInt("lastLocalSubtitlesSourcesFolder", 0); for (int i = 0; i < last; i++) { settings.getLocalSourcesFolders().add( new File(preferences.get("LocalSubtitlesSourcesFolders" + i, ""))); } } private void loadGeneralDefaultIncomingFolders() { if (preferences.get("GeneralDefaultIncomingFolder", "").equals("")) { int last; last = preferences.getInt("lastDefaultIncomingFolder", 0); for (int i = 0; i < last; i++) { settings.getDefaultIncomingFolders().add( new File(preferences.get("GeneralDefaultIncomingFolder" + i, ""))); } } else { // compatibility settings.getDefaultIncomingFolders().add( new File(preferences.get("GeneralDefaultIncomingFolder", ""))); } } private void loadProxySettings() { settings.setGeneralProxyEnabled(preferences.getBoolean("generalProxyEnabled", false)); settings.setGeneralProxyHost(preferences.get("generalProxyHost", "")); settings.setGeneralProxyPort(preferences.getInt("generalProxyPort", 80)); updateProxySettings(); } private void loadExcludeSettings() { int last; last = preferences.getInt("lastItemExclude", 0); for (int i = 0; i < last; i++) { String description = preferences.get("ExcludeDescription" + i, ""); String type = preferences.get("ExcludeType" + i, ""); SettingsExcludeItem sei; try { sei = new SettingsExcludeItem(description, SettingsExcludeType.valueOf(type)); } catch (Exception e) { sei = new SettingsExcludeItem(description, SettingsExcludeType.FOLDER); } settings.getExcludeList().add(sei); } LOGGER.trace("loadExcludeSettings: ExcludeList size {}", settings.getExcludeList().size()); } private void loadLibraryMovie() { LibrarySettings moLibSet = new LibrarySettings(); moLibSet.setLibraryBackupSubtitle(preferences.getBoolean("MovieLibraryBackupSubtitle", false)); moLibSet.setLibraryBackupSubtitlePath(new File(preferences.get( "MovieLibraryBackupSubtitlePath", ""))); moLibSet.setLibraryBackupUseWebsiteFileName(preferences.getBoolean( "MovieLibraryBackupUseWebsiteFileName", false)); moLibSet.setLibraryAction(LibraryActionType.fromString(preferences .get("MovieLibraryAction", ""))); moLibSet.setLibraryUseTVDBNaming(preferences.getBoolean("MovieLibraryUseTVDBNaming", false)); moLibSet.setLibraryReplaceChars(preferences.getBoolean("MovieLibraryReplaceChars", false)); moLibSet.setLibraryOtherFileAction(LibraryOtherFileActionType.fromString(preferences.get( "MovieLibraryOtherFileAction", "NOTHING"))); moLibSet.setLibraryFolder(new File(preferences.get("MovieLibraryFolder", ""))); moLibSet.setLibraryFolderStructure(checkForOldStructure(preferences.get( "MovieLibraryStructure", ""))); moLibSet.setLibraryRemoveEmptyFolders(preferences.getBoolean("MovieLibraryRemoveEmptyFolders", false)); moLibSet.setLibraryFilenameStructure(checkForOldStructure(preferences.get( "MovieLibraryFilename", ""))); moLibSet.setLibraryFilenameReplaceSpace(preferences.getBoolean("MovieLibraryReplaceSpace", false)); moLibSet.setLibraryFilenameReplacingSpaceSign(preferences.get("MovieLibraryReplacingSign", "")); moLibSet.setLibraryFolderReplaceSpace(preferences.getBoolean("MovieLibraryFolderReplaceSpace", false)); moLibSet.setLibraryFolderReplacingSpaceSign(preferences.get("MovieLibraryFolderReplacingSign", "")); moLibSet.setLibraryIncludeLanguageCode(preferences.getBoolean( "MovieLibraryIncludeLanguageCode", false)); moLibSet.setDefaultEnText(preferences.get("MovieLibraryDefaultEnText", "")); moLibSet.setDefaultNlText(preferences.get("MovieLibraryDefaultNlText", "")); settings.setMovieLibrarySettings(moLibSet); } private void loadLibrarySerie() { LibrarySettings epLibSet = new LibrarySettings(); epLibSet .setLibraryBackupSubtitle(preferences.getBoolean("EpisodeLibraryBackupSubtitle", false)); epLibSet.setLibraryBackupSubtitlePath(new File(preferences.get( "EpisodeLibraryBackupSubtitlePath", ""))); epLibSet.setLibraryBackupUseWebsiteFileName(preferences.getBoolean( "EpisodeLibraryBackupUseWebsiteFileName", false)); epLibSet.setLibraryAction(LibraryActionType.fromString(preferences.get("EpisodeLibraryAction", ""))); epLibSet.setLibraryUseTVDBNaming(preferences.getBoolean("EpisodeLibraryUseTVDBNaming", false)); epLibSet.setLibraryReplaceChars(preferences.getBoolean("EpisodeLibraryReplaceChars", false)); epLibSet.setLibraryOtherFileAction(LibraryOtherFileActionType.fromString(preferences.get( "EpisodeLibraryOtherFileAction", "NOTHING"))); epLibSet.setLibraryFolder(new File(preferences.get("EpisodeLibraryFolder", ""))); epLibSet.setLibraryFolderStructure(checkForOldStructure(preferences.get( "EpisodeLibraryStructure", ""))); epLibSet.setLibraryRemoveEmptyFolders(preferences.getBoolean( "EpisodeLibraryRemoveEmptyFolders", false)); epLibSet.setLibraryFilenameStructure(checkForOldStructure(preferences.get( "EpisodeLibraryFilename", ""))); epLibSet.setLibraryFilenameReplaceSpace(preferences.getBoolean("EpisodeLibraryReplaceSpace", false)); epLibSet.setLibraryFilenameReplacingSpaceSign(preferences .get("EpisodeLibraryReplacingSign", "")); epLibSet.setLibraryFolderReplaceSpace(preferences.getBoolean( "EpisodeLibraryFolderReplaceSpace", false)); epLibSet.setLibraryFolderReplacingSpaceSign(preferences.get( "EpisodeLibraryFolderReplacingSign", "")); epLibSet.setLibraryIncludeLanguageCode(preferences.getBoolean( "EpisodeLibraryIncludeLanguageCode", false)); epLibSet.setDefaultEnText(preferences.get("EpisodeLibraryDefaultEnText", "")); epLibSet.setDefaultNlText(preferences.get("EpisodeLibraryDefaultNlText", "")); settings.setEpisodeLibrarySettings(epLibSet); } private void loadSerieSourcesSettings() { settings.setLoginAddic7edEnabled(preferences.getBoolean("loginAddic7edEnabled", false)); settings.setLoginAddic7edUsername(preferences.get("loginAddic7edUsername", "")); settings.setLoginAddic7edPassword(preferences.get("loginAddic7edPassword", "")); settings.setSerieSourceAddic7ed(preferences.getBoolean("serieSourceAddic7ed", true)); settings.setSerieSourceLocal(preferences.getBoolean("serieSourceLocal", true)); settings.setSerieSourceOpensubtitles(preferences.getBoolean("serieSourceOpensubtitles", true)); settings.setSerieSourcePodnapisi(preferences.getBoolean("serieSourcePodnapisi", true)); settings.setSerieSourceTvSubtitles(preferences.getBoolean("serieSourceTvSubtitles", true)); settings.setSerieSourceSubsMax(preferences.getBoolean("serieSourceSubsMax", true)); } private String checkForOldStructure(String oldStructure) { switch (oldStructure) { case "Show\\Season": return "%SHOW NAME%%SEPARATOR%Season %S%"; case "Show\\Series": return "%SHOW NAME%%SEPARATOR%Series %S%"; case "\\": return "%SEPARATOR%"; case "Show S00E00.extension": return "%SHOW NAME% S%SS%E%EE%"; case "Show S00E00 Title.extension": return "%SHOW NAME% S%SS%E%EE% %TITLE%"; case "Show 00X00 Title.extension": return "%SHOW NAME% %SS%X%EE% %TITLE%"; case "Show - S00E00.extension": return "%SHOW NAME% - S%SS%E%EE%"; case "Show S00E00 Title Quality.extension": return "%SHOW NAME% S%SS%E%EE% %TITLE% %QUALITY%"; case "Movie (Year)": return "%MOVIE TITLE% (%YEAR%)"; case "Year\\Movie": return "%YEAR%%SEPARATOR%%MOVIE TITLE%"; } return oldStructure; } public void exportPreferences(File file) { store(); try (FileOutputStream fos = new FileOutputStream(file)) { preferences.exportSubtree(fos); } catch (Exception e) { LOGGER.error("exportPreferences", e); } } public void importPreferences(File file) { try (InputStream is = new BufferedInputStream(new FileInputStream(file))) { preferences.clear(); Preferences.importPreferences(is); load(); } catch (Exception e) { LOGGER.error("importPreferences", e); } } public Settings getSettings() { return settings; } public void setSettings(Settings settings) { this.settings = settings; store(); } public void updateProxySettings() { if (settings.isGeneralProxyEnabled()) { System.getProperties().put("proxySet", "true"); System.getProperties().put("proxyHost", settings.getGeneralProxyHost()); System.getProperties().put("proxyPort", settings.getGeneralProxyPort()); } else { System.getProperties().put("proxySet", "false"); } } public void loadScreenSettings() { settings.getScreenSettings().setHideEpisode(preferences.getBoolean("ScreenHideEpisode", true)); settings.getScreenSettings().setHideFilename( preferences.getBoolean("ScreenHideFilename", false)); settings.getScreenSettings().setHideSeason(preferences.getBoolean("ScreenHideSeason", true)); settings.getScreenSettings().setHideTitle(preferences.getBoolean("ScreenHideTitle", true)); settings.getScreenSettings().setHideType(preferences.getBoolean("ScreenHideType", true)); settings.getScreenSettings().setHideWIP(preferences.getBoolean("ScreenHideWIP", true)); } /** * @throws Throwable * */ public void updateMappingFromOnline() throws Throwable { LOGGER.info(Messages.getString("SettingsControl.UpdateMapping")); mappingSettingsCtrl.updateMappingFromOnline(); settings.setMappingSettings(mappingSettingsCtrl.getMappingSettings()); } private void storeDefaultSelectionSettings() { int last; last = 0; for (int i = 0; i < settings.getOptionsDefaultSelectionQualityList().size(); i++) { preferences.put("DefaultSelectionQuality" + i, settings .getOptionsDefaultSelectionQualityList().get(i)); last++; } preferences.putInt("lastItemDefaultSelectionQuality", last); preferences.putBoolean("DefaultSelectionQualityEnabled", settings.isOptionsDefaultSelection()); } private void loadDefaultSelectionSettings() { int last; last = preferences.getInt("lastItemDefaultSelectionQuality", 0); for (int i = 0; i < last; i++) { settings.getOptionsDefaultSelectionQualityList().add(preferences.get("DefaultSelectionQuality" + i, "")); } settings.setOptionsDefaultSelection(preferences.getBoolean("DefaultSelectionQualityEnabled", false)); } }