package net.krautchan.android; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; import net.krautchan.android.helpers.FileHelpers; import android.content.Context; import android.os.Build; import android.widget.Toast; import com.osbcp.cssparser.CSSParser; import com.osbcp.cssparser.Rule; public class Styles { private List<Rule> cssRules; private String styles; //private String bodyBGCol; public Styles (Context context) { String css = null; String css2 = null; try { InputStream is = context.getAssets().open("style.css"); BufferedReader r = new BufferedReader(new InputStreamReader(is)); StringBuilder builder = new StringBuilder(); String line; while ((line = r.readLine()) != null) { builder.append(line); } r.close(); r = null; css = builder.toString(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { File cssFile = FileHelpers.getSDFile("style.css"); if ((null != cssFile) && (cssFile.exists())) { InputStream cssStream = new FileInputStream (cssFile); BufferedReader r = new BufferedReader(new InputStreamReader(cssStream)); StringBuilder builder = new StringBuilder(); String line; while ((line = r.readLine()) != null) { builder.append(line); } r.close(); r = null; css2 = css +"\n"+builder.toString(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (Build.VERSION.SDK_INT <= 9) { styles = css+"\n"+css2; } else { if (null != css2) { try { cssRules = CSSParser.parse(css2); } catch (Exception e) { try { cssRules = CSSParser.parse(css); } catch (Exception e2) { // TODO Auto-generated catch block e2.printStackTrace(); } } } else { try { cssRules = CSSParser.parse(css); } catch (Exception e2) { // TODO Auto-generated catch block e2.printStackTrace(); } } StringBuffer buf = new StringBuffer (16000); if (null == cssRules) { Toast.makeText(context, "CSS malformed", Toast.LENGTH_LONG).show(); } else { for (Rule r: cssRules) { /*List<Selector> selectors = r.getSelectors(); for (Selector s : selectors) { if (s.toString().equals("body")){ List<PropertyValue> pvs = r.getPropertyValues(); for (PropertyValue pv : pvs) { if (pv.getProperty().equals("background-color")) { this.bodyBGCol = pv.getValue(); } } } }*/ buf.append(r.toString()); } } styles = buf.toString(); } } public String getStyles() { return styles; } }