Beispiel #1
0
 private void bind(PreferenceGroup group) {
   SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
   for (int i = 0; i < group.getPreferenceCount(); i++) {
     Preference p = group.getPreference(i);
     if (p instanceof PreferenceGroup) {
       bind((PreferenceGroup) p);
     } else {
       if (p instanceof CheckBoxPreference) {;
       } else {
         Object val = sp.getAll().get(p.getKey());
         p.setSummary(val == null ? "" : ("" + val));
         p.setOnPreferenceChangeListener(this);
       }
     }
   }
 }
  private void initGroups(PreferenceGroup preferences) {
    final int count = preferences.getPreferenceCount();
    for (int i = 0; i < count; i++) {
      Preference pref = preferences.getPreference(i);
      if (pref instanceof PreferenceGroup) initGroups((PreferenceGroup) pref);
      else {
        pref.setOnPreferenceChangeListener(this);

        // Some Preference UI elements are not actually preferences,
        // but they require a key to work correctly. For example,
        // "Clear private data" requires a key for its state to be
        // saved when the orientation changes. It uses the
        // "android.not_a_preference.privacy.clear" key - which doesn't
        // exist in Gecko - to satisfy this requirement.
        String key = pref.getKey();
        if (key != null && !key.startsWith(NON_PREF_PREFIX)) {
          mPreferencesList.add(pref.getKey());
        }
      }
    }
  }
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);
    sharedPreferences = getPreferenceScreen().getSharedPreferences();

    connectionSettings =
        (PreferenceScreen) getPreferenceScreen().findPreference("connection_group");
    hostPref = (EditTextPreference) getPreferenceScreen().findPreference("host");
    portPref = (EditTextPreference) getPreferenceScreen().findPreference("port");
    passPref = (EditTextPreference) getPreferenceScreen().findPreference("password");
    textSizePref = (EditTextPreference) getPreferenceScreen().findPreference("text_size");
    bufferFontPref = (FontPreference) getPreferenceScreen().findPreference("buffer_font");
    timestampformatPref =
        (EditTextPreference) getPreferenceScreen().findPreference("timestamp_format");
    timestampformatPref.setOnPreferenceChangeListener(
        new Preference.OnPreferenceChangeListener() {
          @Override
          public boolean onPreferenceChange(Preference preference, Object pattern) {
            try {
              new SimpleDateFormat((String) pattern);
            } catch (IllegalArgumentException e) {
              Toast.makeText(
                      WeechatPreferencesActivity.this,
                      R.string.pref_timestamp_invalid,
                      Toast.LENGTH_SHORT)
                  .show();
              return false;
            }

            return true;
          }
        });
    stunnelCert = (EditTextPreference) getPreferenceScreen().findPreference("stunnel_cert");
    stunnelPass = (EditTextPreference) getPreferenceScreen().findPreference("stunnel_pass");

    sshHostPref = (EditTextPreference) getPreferenceScreen().findPreference("ssh_host");
    sshUserPref = (EditTextPreference) getPreferenceScreen().findPreference("ssh_user");
    sshPortPref = (EditTextPreference) getPreferenceScreen().findPreference("ssh_port");
    sshPassPref = (EditTextPreference) getPreferenceScreen().findPreference("ssh_pass");
    sshKeyFilePref = (EditTextPreference) getPreferenceScreen().findPreference("ssh_keyfile");

    prefixPref = (ListPreference) getPreferenceScreen().findPreference("prefix_align");
    Preference prefixWidthPref = getPreferenceScreen().findPreference("prefix_max_width");
    prefixWidthPref.setOnPreferenceChangeListener(
        new Preference.OnPreferenceChangeListener() {
          @Override
          public boolean onPreferenceChange(Preference preference, Object newValue) {
            try {
              Integer.parseInt((String) newValue);
            } catch (IllegalArgumentException e) {
              Toast.makeText(
                      WeechatPreferencesActivity.this,
                      R.string.pref_prefix_width_invalid,
                      Toast.LENGTH_SHORT)
                  .show();
              return false;
            }

            return true;
          }
        });
    connectionTypePref = (ListPreference) getPreferenceScreen().findPreference("connection_type");
    pingPreferences = (PreferenceScreen) getPreferenceScreen().findPreference("ping_group");
    pingEnabledPref = (CheckBoxPreference) getPreferenceScreen().findPreference("ping_enabled");
    setTitle(R.string.preferences);

    // Really simple validation to make sure they don't have a space in the hostname(common when
    // using android's autocomplete
    hostPref.setOnPreferenceChangeListener(
        new Preference.OnPreferenceChangeListener() {
          @Override
          public boolean onPreferenceChange(Preference preference, Object newValue) {
            String val = (String) newValue;
            if (val.contains(" ")) {
              Toast.makeText(
                      WeechatPreferencesActivity.this,
                      R.string.pref_hostname_invalid,
                      Toast.LENGTH_SHORT)
                  .show();
              return false;
            }
            return true;
          }
        });
    sshHostPref.setOnPreferenceChangeListener(
        new Preference.OnPreferenceChangeListener() {
          @Override
          public boolean onPreferenceChange(Preference preference, Object newValue) {
            String val = (String) newValue;
            if (val.contains(" ")) {
              Toast.makeText(
                      WeechatPreferencesActivity.this,
                      R.string.pref_hostname_invalid,
                      Toast.LENGTH_SHORT)
                  .show();
              return false;
            }
            return true;
          }
        });
  }
Beispiel #4
0
  /** @see android.app.Activity#onResume() */
  @Override
  protected void onResume() {
    super.onResume();

    final HistoryManager historyManager = HashItApplication.getApp(this).getHistoryManager();
    final PreferenceScreen prefScreen = getPreferenceScreen();

    final SharedPreferences defaults =
        PreferenceManager.getDefaultSharedPreferences(getBaseContext());

    if (SDK_INT >= HONEYCOMB) {
      // Look & Feel
      final PreferenceCategory lookAndFeel = new PreferenceCategory(this);
      lookAndFeel.setTitle(R.string.Header_LookAndFeel);
      prefScreen.addPreference(lookAndFeel);

      final Preference useDarkTheme =
          addCheckBoxPreference(
              lookAndFeel, USE_DARK_THEME, R.string.CheckBox_UseDarkTheme, defaults, false);
      useDarkTheme.setOnPreferenceChangeListener(
          new OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
              recreate();
              return true;
            }
          });
    }

    // Convenience
    final PreferenceCategory convenience = new PreferenceCategory(this);
    convenience.setTitle(R.string.Header_Convenience);
    prefScreen.addPreference(convenience);

    final Preference enableHistory =
        addCheckBoxPreference(
            convenience, ENABLE_HISTORY, R.string.CheckBox_EnableHistory, defaults, true);
    enableHistory.setSummary(R.string.Summary_EnableHistory);

    final boolean enableClear = historyManager != null && !historyManager.isEmpty();
    final Preference clear =
        addActionPreference(
            convenience,
            R.string.Action_ClearHistory,
            new OnPreferenceClickListener() {

              public boolean onPreferenceClick(Preference pref) {
                historyManager.clear();
                pref.setSummary(R.string.Summary_ClearHistory_Empty);
                pref.setEnabled(false);
                return true;
              }
            },
            enableClear);
    clear.setSummary(
        enableClear ? R.string.Summary_ClearHistory : R.string.Summary_ClearHistory_Empty);

    final Preference autoExit =
        addCheckBoxPreference(convenience, AUTO_EXIT, R.string.CheckBox_AutoExit, defaults, false);
    autoExit.setSummary(R.string.Summary_AutoExit);

    final ListPreference cacheDuration =
        addListPreference(
            convenience,
            CACHE_DURATION,
            R.string.Label_CacheMasterKey,
            R.string.Header_CacheDuration,
            R.array.Array_CacheDuration,
            R.array.Array_CacheDuration_Values,
            defaults,
            -1);
    cacheDuration.setOnPreferenceChangeListener(
        new OnPreferenceChangeListener() {

          public boolean onPreferenceChange(Preference preference, Object newValue) {
            updateSummary((ListPreference) preference, newValue);
            if (Integer.parseInt((String) newValue) <= 0) {
              MemoryCacheServiceImpl.stopService(SettingsActivity.this);
            }
            return true;
          }
        });
    updateSummary(cacheDuration, cacheDuration.getValue());

    final Preference showMasterKeyDigest;
    showMasterKeyDigest =
        addCheckBoxPreference(
            convenience,
            SHOW_MASTER_KEY_DIGEST,
            R.string.CheckBox_ShowMasterKeyDigest,
            defaults,
            true);
    showMasterKeyDigest.setSummary(R.string.Summary_ShowMasterKeyDigest);

    disableConflictingPreferences(DISABLE_CLIPBOARD, DEPS_DISABLE_CLIPBOARD);

    if (savedState != null) {
      final Parcelable listState = savedState.getParcelable(PREF_LIST_STATE);
      if (listState != null) {
        Handler handler = new Handler();
        // run the position restore delayed (as it won't work synchronously)
        handler.post(
            new Runnable() {
              @Override
              public void run() {
                final ListView listView = getListView();
                listView.onRestoreInstanceState(listState);
              }
            });
      }
      savedState = null;
    }
  }
Beispiel #5
0
  @Override
  protected void populateSecurityCategory(
      final PreferenceCategory security, final SharedPreferences defaults) {
    final Preference compatibilityMode =
        addCheckBoxPreference(
            security, COMPATIBILITY_MODE, R.string.CheckBox_CompatibilityMode, defaults, true);
    compatibilityMode.setSummary(R.string.Summary_CompatibilityMode);
    compatibilityMode.setOnPreferenceChangeListener(
        new OnPreferenceChangeListener() {

          public boolean onPreferenceChange(final Preference pref, final Object newValue) {
            if (Boolean.FALSE == newValue) {
              new AlertDialog.Builder(SettingsActivity.this)
                  .setTitle(R.string.Title_SeedWarning)
                  .setMessage(R.string.Message_SeedWarning)
                  .setPositiveButton(android.R.string.ok, new DummyOnClickListener())
                  .setIcon(R.drawable.icon)
                  .show();
            }

            return true;
          }
        });
    final Preference setPrivateKey =
        addActionPreference(
            security,
            R.string.Action_ChangeSeed,
            new OnPreferenceClickListener() {
              public boolean onPreferenceClick(Preference pref) {
                final View view = View.inflate(SettingsActivity.this, R.layout.seed_entry, null);

                final EditText seed = (EditText) view.findViewById(R.id.Edit_SeedEntry);
                seed.setText(SeedHelper.getSeed(defaults));

                new AlertDialog.Builder(SettingsActivity.this)
                    .setTitle(R.string.Title_ChangeSeed)
                    .setView(view)
                    .setPositiveButton(
                        android.R.string.ok,
                        new DialogInterface.OnClickListener() {
                          public void onClick(DialogInterface dialog, int which) {
                            SeedHelper.storeSeed(seed.getText().toString(), defaults);
                          }
                        })
                    .setNegativeButton(android.R.string.cancel, new DummyOnClickListener())
                    .setCancelable(true)
                    .setIcon(R.drawable.icon)
                    .show();
                return true;
              }
            },
            true);
    setPrivateKey.setSummary(R.string.Summary_ChangeSeed);
    final Preference disableClipboard =
        addCheckBoxPreference(
            security, DISABLE_CLIPBOARD, R.string.CheckBox_DisableClipboard, defaults, false);
    disableClipboard.setSummary(R.string.Summary_DisableClipboard);
    disableClipboard.setOnPreferenceChangeListener(
        new OnPreferenceChangeListener() {

          public boolean onPreferenceChange(Preference preference, Object newVal) {
            Boolean newValue = (Boolean) newVal;

            disableConflictingPreferences(newValue, true, DEPS_DISABLE_CLIPBOARD);
            if (newValue) ((CheckBoxPreference) findPreference(AUTO_EXIT)).setChecked(false);

            return true;
          }
        });
  }