Home | History | Annotate | Download | only in activity
      1 /*
      2  * Copyright (C) 2008 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.email.activity;
     18 
     19 import com.android.email.Controller;
     20 import com.android.email.Email;
     21 import com.android.email.Preferences;
     22 import com.android.email.R;
     23 import com.android.exchange.Eas;
     24 import com.android.exchange.utility.FileLogger;
     25 
     26 import android.app.Activity;
     27 import android.content.Context;
     28 import android.os.Bundle;
     29 import android.view.Menu;
     30 import android.view.MenuItem;
     31 import android.widget.CheckBox;
     32 import android.widget.CompoundButton;
     33 import android.widget.TextView;
     34 import android.widget.CompoundButton.OnCheckedChangeListener;
     35 
     36 public class Debug extends Activity implements OnCheckedChangeListener {
     37     private TextView mVersionView;
     38     private CheckBox mEnableDebugLoggingView;
     39     private CheckBox mEnableSensitiveLoggingView;
     40     private CheckBox mEnableExchangeLoggingView;
     41     private CheckBox mEnableExchangeFileLoggingView;
     42 
     43     private Preferences mPreferences;
     44 
     45     @Override
     46     public void onCreate(Bundle savedInstanceState) {
     47         super.onCreate(savedInstanceState);
     48 
     49         setContentView(R.layout.debug);
     50 
     51         mPreferences = Preferences.getPreferences(this);
     52 
     53         mVersionView = (TextView)findViewById(R.id.version);
     54         mEnableDebugLoggingView = (CheckBox)findViewById(R.id.debug_logging);
     55         mEnableSensitiveLoggingView = (CheckBox)findViewById(R.id.sensitive_logging);
     56 
     57         mEnableDebugLoggingView.setOnCheckedChangeListener(this);
     58         mEnableSensitiveLoggingView.setOnCheckedChangeListener(this);
     59 
     60         mVersionView.setText(String.format(getString(R.string.debug_version_fmt).toString(),
     61                 getString(R.string.build_number)));
     62 
     63         mEnableDebugLoggingView.setChecked(Email.DEBUG);
     64         mEnableSensitiveLoggingView.setChecked(Email.DEBUG_SENSITIVE);
     65 
     66         //EXCHANGE-REMOVE-SECTION-START
     67         mEnableExchangeLoggingView = (CheckBox)findViewById(R.id.exchange_logging);
     68         mEnableExchangeFileLoggingView = (CheckBox)findViewById(R.id.exchange_file_logging);
     69         mEnableExchangeLoggingView.setOnCheckedChangeListener(this);
     70         mEnableExchangeFileLoggingView.setOnCheckedChangeListener(this);
     71         mEnableExchangeLoggingView.setChecked(Eas.USER_LOG);
     72         mEnableExchangeFileLoggingView.setChecked(Eas.FILE_LOG);
     73         //EXCHANGE-REMOVE-SECTION-END
     74     }
     75 
     76     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
     77         switch (buttonView.getId()) {
     78             case R.id.debug_logging:
     79                 Email.DEBUG = isChecked;
     80                 mPreferences.setEnableDebugLogging(Email.DEBUG);
     81                 break;
     82             case R.id.sensitive_logging:
     83                 Email.DEBUG_SENSITIVE = isChecked;
     84                 mPreferences.setEnableSensitiveLogging(Email.DEBUG_SENSITIVE);
     85                 break;
     86             //EXCHANGE-REMOVE-SECTION-START
     87             case R.id.exchange_logging:
     88                 mPreferences.setEnableExchangeLogging(isChecked);
     89                 break;
     90             case R.id.exchange_file_logging:
     91                 mPreferences.setEnableExchangeFileLogging(isChecked);
     92                 if (!isChecked) {
     93                     FileLogger.close();
     94                 }
     95                 break;
     96             //EXCHANGE-REMOVE-SECTION-END
     97         }
     98 
     99         updateLoggingFlags(this);
    100     }
    101 
    102     @Override
    103     public boolean onOptionsItemSelected(MenuItem item) {
    104         int id = item.getItemId();
    105         if (id == R.id.dump_settings) {
    106             Preferences.getPreferences(this).dump();
    107             return true;
    108         }
    109         return super.onOptionsItemSelected(item);
    110     }
    111 
    112     @Override
    113     public boolean onCreateOptionsMenu(Menu menu) {
    114         super.onCreateOptionsMenu(menu);
    115         getMenuInflater().inflate(R.menu.debug_option, menu);
    116         return true;
    117     }
    118 
    119     /**
    120      * Load enabled debug flags from the preferences and upadte the EAS debug flag.
    121      */
    122     public static void updateLoggingFlags(Context context) {
    123         //EXCHANGE-REMOVE-SECTION-START
    124         Preferences prefs = Preferences.getPreferences(context);
    125         int debugLogging = prefs.getEnableDebugLogging() ? Eas.DEBUG_BIT : 0;
    126         int exchangeLogging = prefs.getEnableExchangeLogging() ? Eas.DEBUG_EXCHANGE_BIT : 0;
    127         int fileLogging = prefs.getEnableExchangeFileLogging() ? Eas.DEBUG_FILE_BIT : 0;
    128         int debugBits = debugLogging | exchangeLogging | fileLogging;
    129         Controller.getInstance(context).serviceLogging(debugBits);
    130         //EXCHANGE-REMOVE-SECTION-END
    131     }
    132 }
    133