@Override
  protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.Theme_Sherlock);
    super.onCreate(savedInstanceState);

    // add preferences
    addPreferencesFromResource(R.xml.quran_preferences);

    // special handling for the arabic checkbox
    CheckBoxPreference arabicPreference =
        (CheckBoxPreference) findPreference(Constants.PREF_USE_ARABIC_NAMES);
    mInitiallyIsArabic = arabicPreference.isChecked();
    mIsArabic = mInitiallyIsArabic;
    arabicPreference.setOnPreferenceChangeListener(
        new OnPreferenceChangeListener() {
          @Override
          public boolean onPreferenceChange(Preference preference, Object newValue) {
            boolean isArabic = (Boolean) newValue;
            mIsArabic = isArabic;

            Locale lang = (isArabic ? new Locale("ar") : getResources().getConfiguration().locale);
            Locale.setDefault(lang);
            Configuration config = new Configuration();
            config.locale = lang;
            getResources().updateConfiguration(config, getResources().getDisplayMetrics());

            return true;
          }
        });

    // remove the tablet mode preference if it doesn't exist
    if (!QuranScreenInfo.getOrMakeInstance(this).isTablet(this)) {
      Preference tabletModePreference = findPreference(Constants.PREF_TABLET_ENABLED);
      PreferenceCategory category =
          (PreferenceCategory) findPreference(Constants.PREF_DISPLAY_CATEGORY);
      category.removePreference(tabletModePreference);
    }

    Preference advancedPrefs = findPreference(getString(R.string.prefs_advanced_settings));
    advancedPrefs.setOnPreferenceClickListener(
        new Preference.OnPreferenceClickListener() {
          @Override
          public boolean onPreferenceClick(Preference preference) {
            mLoadStorageOptionsTask = new LoadStorageOptionsTask();
            mLoadStorageOptionsTask.execute();
            return false;
          }
        });

    /*
    // can enable this to get logs from users until we move it to
    // a setting. needs READ_LOGS permissions below jellybean. this
    // is a work around until we properly use the Logger framework
    // to roll our own log files.
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
      mReadLogsTask = new ReadLogsTask();
      mReadLogsTask.execute();
    }
    */

    mListStorageOptions = (ListPreference) findPreference(getString(R.string.prefs_app_location));

    mStorageList = StorageUtils.getAllStorageLocations(getApplicationContext());

    // Hide Advanced Preferences Screen if there is no storage option
    // except for the normal Environment.getExternalStorageDirectory
    if (mStorageList.size() <= 1) {
      Log.d(TAG, "removing advanced settings from preferences");
      getPreferenceScreen().removePreference(advancedPrefs);
    }
  }
    @Override
    protected void onPostExecute(String logs) {
      if (mIsPaused) {
        return;
      }

      Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
      emailIntent.setType("plain/text");

      QuranScreenInfo qsi;
      String body = "\n\n";
      try {
        PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
        body = pInfo.packageName + " Version: " + pInfo.versionName;
      } catch (Exception e) {
      }

      try {
        body += "\nPhone: " + android.os.Build.MANUFACTURER + " " + android.os.Build.MODEL;
        body +=
            "\nAndroid Version: "
                + android.os.Build.VERSION.CODENAME
                + " "
                + android.os.Build.VERSION.RELEASE;

        qsi = QuranScreenInfo.getOrMakeInstance(QuranPreferenceActivity.this);
        body += "\nDisplay: " + qsi.getWidthParam();
        if (qsi.isTablet(QuranPreferenceActivity.this)) {
          body += ", tablet width: " + qsi.getWidthParam();
        }
        body += "\n";
        body += "max bitmap height: " + qsi.getBitmapMaxHeight() + "\n";

        if (QuranFileUtils.haveAllImages(QuranPreferenceActivity.this, qsi.getWidthParam())) {
          body += "all images found for " + qsi.getWidthParam() + "\n";
        }

        if (qsi.isTablet(QuranPreferenceActivity.this)
            && QuranFileUtils.haveAllImages(
                QuranPreferenceActivity.this, qsi.getTabletWidthParam())) {
          body += "all tablet images found for " + qsi.getTabletWidthParam() + "\n";
        }
      } catch (Exception e) {
      }

      int memClass =
          ((ActivityManager)
                  QuranPreferenceActivity.this.getSystemService(Context.ACTIVITY_SERVICE))
              .getMemoryClass();
      body += "memory class: " + memClass + "\n\n";

      body += "\n\n";
      body += "\nLogs: " + logs;
      body += "\n\n";

      emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, body);
      emailIntent.putExtra(
          android.content.Intent.EXTRA_SUBJECT, getString(R.string.email_logs_subject));
      emailIntent.putExtra(
          android.content.Intent.EXTRA_EMAIL, new String[] {getString(R.string.email_to)});
      startActivity(Intent.createChooser(emailIntent, getString(R.string.send_email)));
    }