1eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck/* 2eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * Copyright (C) 2011 The Android Open Source Project 3eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * 4eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * Licensed under the Apache License, Version 2.0 (the "License"); 5eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * you may not use this file except in compliance with the License. 6eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * You may obtain a copy of the License at 7eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * 8eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * http://www.apache.org/licenses/LICENSE-2.0 9eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * 10eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * Unless required by applicable law or agreed to in writing, software 11eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * distributed under the License is distributed on an "AS IS" BASIS, 12eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * See the License for the specific language governing permissions and 14eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck * limitations under the License. 15eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck */ 16eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 17eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reckpackage com.android.browser.preferences; 18eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 19eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reckimport android.content.Context; 20eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reckimport android.text.TextUtils; 21eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reckimport android.util.AttributeSet; 224d2fcaba7fb8eb1723943ac9a10e76d509330bd1Jonathan Dixonimport android.webkit.WebSettingsClassic; 234d2fcaba7fb8eb1723943ac9a10e76d509330bd1Jonathan Dixonimport android.webkit.WebViewClassic; 24eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 25eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reckimport com.android.browser.BrowserSettings; 26eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reckimport com.android.browser.WebViewProperties; 27eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 28eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reckpublic class InvertedContrastPreview extends WebViewPreview { 29eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 30eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck static final String IMG_ROOT = "content://com.android.browser.home/res/raw/"; 31eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck static final String[] THUMBS = new String[] { 32eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck "thumb_google", 33eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck "thumb_amazon", 34eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck "thumb_cnn", 35eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck "thumb_espn", 36eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck "", // break 37eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck "thumb_bbc", 38eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck "thumb_nytimes", 39eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck "thumb_weatherchannel", 40eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck "thumb_picasa", 41eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck }; 42eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 43eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck String mHtml; 44eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 45eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck public InvertedContrastPreview( 46eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck Context context, AttributeSet attrs, int defStyle) { 47eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck super(context, attrs, defStyle); 48eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck } 49eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 50eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck public InvertedContrastPreview(Context context, AttributeSet attrs) { 51eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck super(context, attrs); 52eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck } 53eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 54eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck public InvertedContrastPreview(Context context) { 55eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck super(context); 56eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck } 57eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 58eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck @Override 59eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck protected void init(Context context) { 60eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck super.init(context); 61eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck StringBuilder builder = new StringBuilder("<html><body style=\"width: 1000px\">"); 62eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck for (String thumb : THUMBS) { 63eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck if (TextUtils.isEmpty(thumb)) { 64eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck builder.append("<br />"); 65eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck continue; 66eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck } 67eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck builder.append("<img src=\""); 68eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck builder.append(IMG_ROOT); 69eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck builder.append(thumb); 70eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck builder.append("\" /> "); 71eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck } 72eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck builder.append("</body></html>"); 73eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck mHtml = builder.toString(); 74eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck } 75eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 76eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck @Override 7796998e27a38534626e7bca6054aa8ddb2f8ca4e2John Reck protected void updatePreview(boolean forceReload) { 78eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck if (mWebView == null) return; 79eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 804d2fcaba7fb8eb1723943ac9a10e76d509330bd1Jonathan Dixon WebSettingsClassic ws = WebViewClassic.fromWebView(mWebView).getSettings(); 81eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck BrowserSettings bs = BrowserSettings.getInstance(); 82eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck ws.setProperty(WebViewProperties.gfxInvertedScreen, 83eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck bs.useInvertedRendering() ? "true" : "false"); 84eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck ws.setProperty(WebViewProperties.gfxInvertedScreenContrast, 85eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck Float.toString(bs.getInvertedContrast())); 8696998e27a38534626e7bca6054aa8ddb2f8ca4e2John Reck if (forceReload) { 8796998e27a38534626e7bca6054aa8ddb2f8ca4e2John Reck mWebView.loadData(mHtml, "text/html", null); 8896998e27a38534626e7bca6054aa8ddb2f8ca4e2John Reck } 89eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck } 90eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck 91eabe5dabe4e56a78c5d6cf99e6f171452bad2f23John Reck} 92