private void setProtectionDependentsState() {
   boolean isProtected = MyApplication.PrefKey.PERFORM_PROTECTION.getBoolean(false);
   findPreference(MyApplication.PrefKey.SECURITY_QUESTION.getKey())
       .setEnabled(MyApplication.getInstance().isContribEnabled() && isProtected);
   findPreference(MyApplication.PrefKey.PROTECTION_DELAY_SECONDS.getKey()).setEnabled(isProtected);
   findPreference(MyApplication.PrefKey.PROTECTION_ENABLE_ACCOUNT_WIDGET.getKey())
       .setEnabled(isProtected);
   findPreference(MyApplication.PrefKey.PROTECTION_ENABLE_TEMPLATE_WIDGET.getKey())
       .setEnabled(isProtected);
   findPreference(MyApplication.PrefKey.PROTECTION_ENABLE_DATA_ENTRY_FROM_WIDGET.getKey())
       .setEnabled(isProtected);
 }
 @Override
 public void onClick(View v) {
   final SharedPreferences settings = MyApplication.getInstance().getSettings();
   final String securityQuestion = MyApplication.PrefKey.SECURITY_QUESTION.getString("");
   EditText input = (EditText) dialog.findViewById(R.id.password);
   TextView error = (TextView) dialog.findViewById(R.id.passwordInvalid);
   if (v == dialog.getButton(AlertDialog.BUTTON_NEGATIVE)) {
     if ((Boolean) input.getTag()) {
       input.setTag(Boolean.valueOf(false));
       ((Button) v).setText(R.string.password_lost);
       dialog.setTitle(R.string.password_prompt);
     } else {
       input.setTag(Boolean.valueOf(true));
       dialog.setTitle(securityQuestion);
       ((Button) v).setText(android.R.string.cancel);
     }
   } else {
     String value = input.getText().toString();
     boolean isInSecurityQuestion = (Boolean) input.getTag();
     if (Utils.md5(value)
         .equals(
             (isInSecurityQuestion
                     ? MyApplication.PrefKey.SECURITY_ANSWER
                     : MyApplication.PrefKey.SET_PASSWORD)
                 .getString(""))) {
       input.setText("");
       error.setText("");
       MyApplication.getInstance().setLocked(false);
       ctx.findViewById(android.R.id.content).setVisibility(View.VISIBLE);
       if (ctx instanceof ActionBarActivity) {
         ((ActionBarActivity) ctx).getSupportActionBar().show();
       }
       if (isInSecurityQuestion) {
         MyApplication.PrefKey.PERFORM_PROTECTION.putBoolean(false);
         Toast.makeText(
                 ctx.getBaseContext(), R.string.password_disabled_reenable, Toast.LENGTH_LONG)
             .show();
         dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setText(R.string.password_lost);
         dialog.setTitle(R.string.password_prompt);
         input.setTag(Boolean.valueOf(false));
       }
       dialog.dismiss();
     } else {
       input.setText("");
       error.setText(
           isInSecurityQuestion
               ? R.string.password_security_answer_not_valid
               : R.string.password_not_valid);
     }
   }
 }
 @Override
 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
   if (key.equals(MyApplication.PrefKey.PERFORM_PROTECTION.getKey())) {
     setProtectionDependentsState();
     AbstractWidget.updateWidgets(this, AccountWidget.class);
     AbstractWidget.updateWidgets(this, TemplateWidget.class);
   } else if (key.equals(MyApplication.PrefKey.UI_FONTSIZE.getKey())
       || key.equals(MyApplication.PrefKey.UI_LANGUAGE.getKey())
       || key.equals(MyApplication.PrefKey.UI_THEME_KEY.getKey())) {
     restart();
   } else if (key.equals(MyApplication.PrefKey.PROTECTION_ENABLE_ACCOUNT_WIDGET.getKey())) {
     Log.d("DEBUG", "shared preference changed: Account Widget");
     AbstractWidget.updateWidgets(this, AccountWidget.class);
   } else if (key.equals(MyApplication.PrefKey.PROTECTION_ENABLE_TEMPLATE_WIDGET.getKey())) {
     Log.d("DEBUG", "shared preference changed: Template Widget");
     AbstractWidget.updateWidgets(this, TemplateWidget.class);
   }
 }
  @SuppressWarnings("deprecation")
  @Override
  public void onCreate(Bundle savedInstanceState) {
    setTheme(MyApplication.getThemeId(Build.VERSION.SDK_INT < 11));
    super.onCreate(savedInstanceState);
    setTitle(Utils.concatResStrings(this, R.string.app_name, R.string.menu_settings));
    addPreferencesFromResource(R.layout.preferences);
    Preference pref = findPreference(MyApplication.PrefKey.SHARE_TARGET.getKey());
    pref.setSummary(
        getString(R.string.pref_share_target_summary)
            + ":\n"
            + "ftp: \"ftp://*****:*****@my.example.org:port/my/directory/\"\n"
            + "mailto: \"mailto:[email protected]\"");
    pref.setOnPreferenceChangeListener(this);
    configureContribPrefs();
    findPreference(MyApplication.PrefKey.SEND_FEEDBACK.getKey()).setOnPreferenceClickListener(this);
    findPreference(MyApplication.PrefKey.MORE_INFO_DIALOG.getKey())
        .setOnPreferenceClickListener(this);

    pref = findPreference(MyApplication.PrefKey.RESTORE.getKey());
    pref.setTitle(getString(R.string.pref_restore_title) + " (ZIP)");
    pref.setOnPreferenceClickListener(this);

    pref = findPreference(MyApplication.PrefKey.RESTORE_LEGACY.getKey());
    pref.setTitle(
        getString(R.string.pref_restore_title)
            + " ("
            + getString(R.string.pref_restore_legacy_data)
            + ")");
    pref.setOnPreferenceClickListener(this);

    findPreference(MyApplication.PrefKey.RATE.getKey()).setOnPreferenceClickListener(this);

    findPreference(MyApplication.PrefKey.ENTER_LICENCE.getKey())
        .setOnPreferenceChangeListener(this);
    setProtectionDependentsState();

    findPreference(MyApplication.PrefKey.PERFORM_PROTECTION.getKey())
        .setOnPreferenceChangeListener(this);

    findPreference(MyApplication.PrefKey.PROTECTION_ENABLE_ACCOUNT_WIDGET.getKey())
        .setOnPreferenceChangeListener(this);

    findPreference(MyApplication.PrefKey.PROTECTION_ENABLE_TEMPLATE_WIDGET.getKey())
        .setOnPreferenceChangeListener(this);

    findPreference(MyApplication.PrefKey.APP_DIR.getKey()).setOnPreferenceClickListener(this);
    setAppDirSummary();
    if (savedInstanceState == null
        && TextUtils.equals(
            getIntent().getStringExtra(KEY_OPEN_PREF_KEY),
            MyApplication.PrefKey.PLANNER_CALENDAR_ID.getKey())) {
      ((CalendarListPreference) findPreference(MyApplication.PrefKey.PLANNER_CALENDAR_ID.getKey()))
          .show();
    }

    findPreference(MyApplication.PrefKey.SHORTCUT_CREATE_TRANSACTION.getKey())
        .setOnPreferenceClickListener(this);
    findPreference(MyApplication.PrefKey.SHORTCUT_CREATE_TRANSFER.getKey())
        .setOnPreferenceClickListener(this);
    findPreference(MyApplication.PrefKey.SHORTCUT_CREATE_SPLIT.getKey())
        .setOnPreferenceClickListener(this);
    findPreference(MyApplication.PrefKey.SECURITY_QUESTION.getKey())
        .setSummary(
            Utils.concatResStrings(
                this, R.string.pref_security_question_summary, R.string.contrib_key_requires));
    findPreference(MyApplication.PrefKey.SHORTCUT_CREATE_SPLIT.getKey())
        .setSummary(
            Utils.concatResStrings(
                this, R.string.pref_shortcut_summary, R.string.contrib_key_requires));
  }