package net.bible.service.css; import java.io.File; import java.util.ArrayList; import java.util.List; import net.bible.android.SharedConstants; import net.bible.service.device.ScreenSettings; /** * Control CSS Stylesheet use. * * @author Martin Denham [mjdenham at gmail dot com] * @see gnu.lgpl.License for license details.<br> * The copyright to this program is held by it's author. */ public class CssControl { private static final String DEFAULT_ASSET_FOLDER = "android_asset/web/"; private static final String DEFAULT_STYLESHEET = "/"+DEFAULT_ASSET_FOLDER+SharedConstants.DEFAULT_STYLESHEET; private static final String NIGHT_MODE_STYLESHEET = "/"+DEFAULT_ASSET_FOLDER+SharedConstants.NIGHT_MODE_STYLESHEET; // User overrides private static final File MANUAL_DEFAULT_STYLESHEET_FILE = SharedConstants.MANUAL_CSS_STYLESHEET; private static final File MANUAL_NIGHT_MODE_STYLESHEET_FILE = SharedConstants.MANUAL_CSS_NIGHT_MODE_STYLESHEET; public List<String> getAllStylesheetLinks() { List<String> styleLinks = new ArrayList<>(); // always used default stylesheet styleLinks.add(getLink(DEFAULT_STYLESHEET)); // is there a user specific stylesheet provided by the user if (isManualCssOverride(MANUAL_DEFAULT_STYLESHEET_FILE)) { styleLinks.add(getLink(MANUAL_DEFAULT_STYLESHEET_FILE.getAbsolutePath())); } // if it is in night mode show the nightmode stylesheet if (ScreenSettings.isNightMode()) { styleLinks.add(getLink(NIGHT_MODE_STYLESHEET)); // is there a user specific night mode stylesheet provided by the user if (isManualCssOverride(MANUAL_NIGHT_MODE_STYLESHEET_FILE)) { styleLinks.add(getLink(MANUAL_NIGHT_MODE_STYLESHEET_FILE.getAbsolutePath())); } } return styleLinks; } private String getLink(String stylesheetName) { return "<link href='file://"+stylesheetName+"' rel='stylesheet' type='text/css'/>"; } private boolean isManualCssOverride(File manualCssFile) { return manualCssFile.exists(); } }