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("\" />&nbsp;");
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