196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/*
257f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler * Copyright (C) 2010 The Android Open Source Project
396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * you may not use this file except in compliance with the License.
696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * You may obtain a copy of the License at
796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
1096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * See the License for the specific language governing permissions and
1496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * limitations under the License.
1596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */
1696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
1757f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadlerpackage com.android.email.activity.setup;
1896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
1957f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadlerimport android.app.Fragment;
208ee17c7012105fd7a5bad644b455d3e894b557dcMakoto Onukiimport android.content.Context;
2196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.os.Bundle;
2257f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadlerimport android.view.LayoutInflater;
2357f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadlerimport android.view.View;
2457f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadlerimport android.view.ViewGroup;
251a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onukiimport android.webkit.WebView;
2696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.CheckBox;
2796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.CompoundButton;
2896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.CompoundButton.OnCheckedChangeListener;
29f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank
30f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.email.Preferences;
31f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.email.R;
32f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.email.activity.UiUtilities;
33f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.email.service.EmailServiceUtils;
34f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.email2.ui.MailActivityEmail;
35f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.emailcommon.Logging;
36560bfadc3151f7a06f3b06e9a6c92cfa534c63ecScott Kennedyimport com.android.mail.utils.LogUtils;
3796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
381a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onukipublic class DebugFragment extends Fragment implements OnCheckedChangeListener,
391a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki        View.OnClickListener {
4096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private Preferences mPreferences;
4196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
427985b43ab7310f76c170266da346f993d2f86051Paul Westbrook    // Public no-args constructor needed for fragment re-instantiation
437985b43ab7310f76c170266da346f993d2f86051Paul Westbrook    public DebugFragment() {}
447985b43ab7310f76c170266da346f993d2f86051Paul Westbrook
4596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    @Override
4657f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler    public View onCreateView(LayoutInflater inflater, ViewGroup container,
4757f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler            Bundle savedInstanceState) {
48f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank        if (Logging.DEBUG_LIFECYCLE && MailActivityEmail.DEBUG) {
49560bfadc3151f7a06f3b06e9a6c92cfa534c63ecScott Kennedy            LogUtils.d(Logging.LOG_TAG, "AccountSetupBasicsFragment onCreateView");
5057f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        }
5157f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        View view = inflater.inflate(R.layout.debug, container, false);
5296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
5357f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        Context context = getActivity();
5457f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        mPreferences = Preferences.getPreferences(context);
5596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
565bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler        final CheckBox enableDebugLoggingView = UiUtilities.getView(view, R.id.debug_logging);
575bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler        enableDebugLoggingView.setChecked(MailActivityEmail.DEBUG);
5891237e9dcb0a948f17488b464edabcea0f259d31Makoto Onuki
595bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler        final CheckBox enableVerboseLoggingView = UiUtilities.getView(view, R.id.verbose_logging);
605bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler        final CheckBox enableFileLoggingView = UiUtilities.getView(view, R.id.file_logging);
61e36b6ff4fa808afa84dc09fa82587dae106c8d3dAndrew Stadler
62e36b6ff4fa808afa84dc09fa82587dae106c8d3dAndrew Stadler        // Note:  To prevent recursion while presetting checkboxes, assign all listeners last
635bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler        enableDebugLoggingView.setOnCheckedChangeListener(this);
643a5c1fb274a9ce72d708d88509bf2607cb018dddMarc Blank
65f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank        if (EmailServiceUtils.areRemoteServicesInstalled(context)) {
665bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler            enableVerboseLoggingView.setChecked(MailActivityEmail.DEBUG_VERBOSE);
675bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler            enableFileLoggingView.setChecked(MailActivityEmail.DEBUG_FILE);
685bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler            enableVerboseLoggingView.setOnCheckedChangeListener(this);
695bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler            enableFileLoggingView.setOnCheckedChangeListener(this);
703a5c1fb274a9ce72d708d88509bf2607cb018dddMarc Blank        } else {
715bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler            enableVerboseLoggingView.setVisibility(View.GONE);
725bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler            enableFileLoggingView.setVisibility(View.GONE);
733a5c1fb274a9ce72d708d88509bf2607cb018dddMarc Blank        }
7457f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler
752fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki        UiUtilities.getView(view, R.id.clear_webview_cache).setOnClickListener(this);
761a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki
775bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler        final CheckBox enableStrictModeView =
782fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki                UiUtilities.getView(view, R.id.debug_enable_strict_mode);
795bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler        enableStrictModeView.setChecked(mPreferences.getEnableStrictMode());
805bbbe11596a38390320d6589cc5f69d5607ffe16Tony Mantler        enableStrictModeView.setOnCheckedChangeListener(this);
8119b2a7ebc9cc770baace1605ff5b44b3fcb46320Makoto Onuki
8257f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        return view;
8396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
8496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
851a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki    @Override
8696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
8776a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler        switch (buttonView.getId()) {
8876a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler            case R.id.debug_logging:
893a5c1fb274a9ce72d708d88509bf2607cb018dddMarc Blank                mPreferences.setEnableDebugLogging(isChecked);
90f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank                MailActivityEmail.DEBUG = isChecked;
91f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank                MailActivityEmail.DEBUG_EXCHANGE = isChecked;
9276a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler                break;
93f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank            case R.id.verbose_logging:
9476a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler                mPreferences.setEnableExchangeLogging(isChecked);
95f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank                MailActivityEmail.DEBUG_VERBOSE = isChecked;
9676a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler                break;
97f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank            case R.id.file_logging:
9876a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler                mPreferences.setEnableExchangeFileLogging(isChecked);
99f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank                MailActivityEmail.DEBUG_FILE = isChecked;
10076a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler                break;
10119b2a7ebc9cc770baace1605ff5b44b3fcb46320Makoto Onuki            case R.id.debug_enable_strict_mode:
10219b2a7ebc9cc770baace1605ff5b44b3fcb46320Makoto Onuki                mPreferences.setEnableStrictMode(isChecked);
103f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank                MailActivityEmail.enableStrictMode(isChecked);
10419b2a7ebc9cc770baace1605ff5b44b3fcb46320Makoto Onuki                break;
10576a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler        }
10676a211e0d9ac6171ff20e1c3dda7a74692d35b6eAndrew Stadler
107f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank        MailActivityEmail.updateLoggingFlags(getActivity());
1088ee17c7012105fd7a5bad644b455d3e894b557dcMakoto Onuki    }
1091a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki
1101a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki    @Override
1111a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki    public void onClick(View v) {
1121a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki        switch (v.getId()) {
1131a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki            case R.id.clear_webview_cache:
1141a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki                clearWebViewCache();
1151a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki                break;
1161a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki        }
1171a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki    }
1181a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki
1191a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki    private void clearWebViewCache() {
1201a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki        WebView webview = new WebView(getActivity());
1211a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki        try {
1221a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki            webview.clearCache(true);
123560bfadc3151f7a06f3b06e9a6c92cfa534c63ecScott Kennedy            LogUtils.w(Logging.LOG_TAG, "Cleard WebView cache.");
1241a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki        } finally {
1251a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki            webview.destroy();
1261a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki        }
1271a0b0092e0deba07b7dcb543a837fbc116584389Makoto Onuki    }
12896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project}
129