示例#1
0
  public void openDialog(
      String title,
      final int min,
      final int max,
      final Preference pref,
      final String path,
      final String key) {
    Resources res = context.getResources();
    String cancel = res.getString(R.string.cancel);
    String ok = res.getString(R.string.ok);
    final EditText settingText;
    LayoutInflater factory = LayoutInflater.from(context);
    final View alphaDialog = factory.inflate(R.layout.seekbar_dialog, null);

    final SeekBar seekbar = (SeekBar) alphaDialog.findViewById(R.id.seek_bar);
    seekbar.setMax(max - min);

    int currentProgress = min;
    if (key.equals("pref_viber")) {
      currentProgress = Integer.parseInt(Helpers.readOneLine(path));
    } else {
      currentProgress = Integer.parseInt(vib.get_val(path));
    }
    if (currentProgress > max) currentProgress = max - min;
    else if (currentProgress < min) currentProgress = 0;
    else currentProgress = currentProgress - min;

    seekbar.setProgress(currentProgress);

    settingText = (EditText) alphaDialog.findViewById(R.id.setting_text);
    settingText.setText(Integer.toString(currentProgress + min));

    settingText.setOnEditorActionListener(
        new TextView.OnEditorActionListener() {
          @Override
          public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_DONE) {
              int val = Integer.parseInt(settingText.getText().toString()) - min;
              seekbar.setProgress(val);
              return true;
            }
            return false;
          }
        });

    settingText.addTextChangedListener(
        new TextWatcher() {
          @Override
          public void onTextChanged(CharSequence s, int start, int before, int count) {}

          @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

          @Override
          public void afterTextChanged(Editable s) {
            try {
              int val = Integer.parseInt(s.toString());
              if (val > max) {
                s.replace(0, s.length(), Integer.toString(max));
                val = max;
              }
              seekbar.setProgress(val - min);
            } catch (NumberFormatException ex) {
            }
          }
        });

    OnSeekBarChangeListener seekBarChangeListener =
        new OnSeekBarChangeListener() {
          @Override
          public void onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) {
            final int mSeekbarProgress = seekbar.getProgress();
            if (fromUser) {
              settingText.setText(Integer.toString(mSeekbarProgress + min));
            }
          }

          @Override
          public void onStopTrackingTouch(SeekBar seekbar) {}

          @Override
          public void onStartTrackingTouch(SeekBar seekbar) {}
        };
    seekbar.setOnSeekBarChangeListener(seekBarChangeListener);

    new AlertDialog.Builder(context)
        .setTitle(title)
        .setView(alphaDialog)
        .setNegativeButton(
            cancel,
            new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int which) {
                // nothing
              }
            })
        .setPositiveButton(
            ok,
            new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int which) {
                int val = min;
                if (!settingText.getText().toString().equals(""))
                  val = Integer.parseInt(settingText.getText().toString());
                if (val < min) val = min;
                seekbar.setProgress(val - min);
                int newProgress = seekbar.getProgress() + min;
                new CMDProcessor()
                    .su.runWaitFor("busybox echo " + Integer.toString(newProgress) + " > " + path);
                String v;
                if (key.equals("pref_viber")) {
                  v = vib.get_val(path);
                  Vibrator vb = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
                  vb.vibrate(1000);
                } else {
                  v = Helpers.readOneLine(path);
                }
                final SharedPreferences.Editor editor = mPreferences.edit();
                editor.putInt(key, Integer.parseInt(v)).commit();
                pref.setSummary(v);
              }
            })
        .create()
        .show();
  }
示例#2
0
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    context = getActivity();
    mPreferences = PreferenceManager.getDefaultSharedPreferences(context);
    mPreferences.registerOnSharedPreferenceChangeListener(this);
    addPreferencesFromResource(R.layout.advanced);

    sreadahead = getResources().getString(R.string.ps_read_ahead, "");

    mReadAhead = (ListPreference) findPreference(PREF_READ_AHEAD);
    mBltimeout = findPreference(PREF_BLTIMEOUT);
    mBltouch = (CheckBoxPreference) findPreference(PREF_BLTOUCH);
    mBln = (CheckBoxPreference) findPreference(PREF_BLN);
    mWifiPM = (CheckBoxPreference) findPreference("pref_wifi_pm");
    mTouchScr = findPreference("touchscr_settings");
    mViber = findPreference("pref_viber");
    mVM = findPreference("vm_settings");

    mDsync = (CheckBoxPreference) findPreference(PREF_DSYNC);

    mPFK = findPreference("pfk_settings");

    mDynamicWriteBackOn = (CheckBoxPreference) findPreference(PREF_DYNAMIC_DIRTY_WRITEBACK);
    mDynamicWriteBackActive = findPreference(PREF_DIRTY_WRITEBACK_ACTIVE);
    mDynamicWriteBackSuspend = findPreference(PREF_DIRTY_WRITEBACK_SUSPEND);

    if (!new File(DSYNC_PATH).exists()) {
      PreferenceCategory hideCat = (PreferenceCategory) findPreference("dsync");
      getPreferenceScreen().removePreference(hideCat);
    } else {
      mDsync.setChecked(Helpers.readOneLine(DSYNC_PATH).equals("1"));
    }
    if (!new File(PFK_HOME_ENABLED).exists() || !new File(PFK_MENUBACK_ENABLED).exists()) {
      PreferenceCategory hideCat = (PreferenceCategory) findPreference("pfk");
      getPreferenceScreen().removePreference(hideCat);
    }

    if (!new File(BL_TIMEOUT_PATH).exists()) {
      PreferenceCategory hideCat = (PreferenceCategory) findPreference("bltimeout");
      getPreferenceScreen().removePreference(hideCat);
    } else {
      mBltimeout.setSummary(Helpers.readOneLine(BL_TIMEOUT_PATH));
    }

    if (!new File(BL_TOUCH_ON_PATH).exists()) {
      PreferenceCategory hideCat = (PreferenceCategory) findPreference("bltouch");
      getPreferenceScreen().removePreference(hideCat);
    } else {
      mBltouch.setChecked(Helpers.readOneLine(BL_TOUCH_ON_PATH).equals("1"));
    }

    BLN_PATH = Helpers.bln_path();
    if (BLN_PATH == null) {
      PreferenceCategory hideCat = (PreferenceCategory) findPreference("bln");
      getPreferenceScreen().removePreference(hideCat);
    } else {
      mBln.setChecked(Helpers.readOneLine(BLN_PATH).equals("1"));
    }

    if (no_touchscreen()) {
      PreferenceCategory hideCat = (PreferenceCategory) findPreference("touch_scr");
      getPreferenceScreen().removePreference(hideCat);
    }

    VIBE_PATH = vib.get_path();

    if (VIBE_PATH == null) {
      PreferenceCategory hideCat = (PreferenceCategory) findPreference("viber");
      getPreferenceScreen().removePreference(hideCat);
    } else {
      mViber.setSummary(vib.get_val(VIBE_PATH));
    }

    if (!new File(DYNAMIC_DIRTY_WRITEBACK_PATH).exists()) {
      PreferenceCategory hideCat = (PreferenceCategory) findPreference("cat_dynamic_write_back");
      getPreferenceScreen().removePreference(hideCat);
    } else {
      boolean ison = Helpers.readOneLine(DYNAMIC_DIRTY_WRITEBACK_PATH).equals("1");
      mDynamicWriteBackOn.setChecked(ison);
      mDynamicWriteBackActive.setSummary(Helpers.readOneLine(DIRTY_WRITEBACK_ACTIVE_PATH));
      mDynamicWriteBackSuspend.setSummary(Helpers.readOneLine(DIRTY_WRITEBACK_SUSPEND_PATH));
    }
    WIFIPM_PATH = Helpers.wifipm_path();
    if (WIFIPM_PATH == null) {
      PreferenceCategory hideCat = (PreferenceCategory) findPreference("wifi_pm");
      getPreferenceScreen().removePreference(hideCat);
    } else {
      mWifiPM.setChecked(Helpers.readOneLine(WIFIPM_PATH).equals("1"));
    }
    final String readahead = Helpers.readOneLine(READ_AHEAD_PATH);
    mReadAhead.setValue(readahead);
    mReadAhead.setSummary(getString(R.string.ps_read_ahead, readahead + "  kb"));

    setHasOptionsMenu(true);
  }
示例#3
0
  @Override
  public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {

    if (preference == mDsync) {
      if (Helpers.readOneLine(DSYNC_PATH).equals("0")) {
        new CMDProcessor().su.runWaitFor("busybox echo 1 > " + DSYNC_PATH);
      } else {
        new CMDProcessor().su.runWaitFor("busybox echo 0 > " + DSYNC_PATH);
      }
      return true;
    } else if (preference == mBltimeout) {
      openDialog(
          getString(R.string.bltimeout_title),
          0,
          5000,
          preference,
          BL_TIMEOUT_PATH,
          PREF_BLTIMEOUT);
      return true;
    } else if (preference == mBltouch) {
      if (Helpers.readOneLine(BL_TOUCH_ON_PATH).equals("0")) {
        new CMDProcessor().su.runWaitFor("busybox echo 1 > " + BL_TOUCH_ON_PATH);
      } else {
        new CMDProcessor().su.runWaitFor("busybox echo 0 > " + BL_TOUCH_ON_PATH);
      }
      return true;
    } else if (preference == mBln) {
      if (Helpers.readOneLine(BLN_PATH).equals("0")) {
        new CMDProcessor().su.runWaitFor("busybox echo 1 > " + BLN_PATH);
      } else {
        new CMDProcessor().su.runWaitFor("busybox echo 0 > " + BLN_PATH);
      }
      return true;
    } else if (preference == mTouchScr) {
      Intent intent = new Intent(context, TouchScreenSettings.class);
      startActivity(intent);
      return true;
    } else if (preference == mViber) {
      openDialog(
          getString(R.string.viber_title),
          vib.get_min(),
          vib.get_max(),
          preference,
          VIBE_PATH,
          "pref_viber");
      return true;
    } else if (preference == mPFK) {
      Intent intent = new Intent(context, PFKActivity.class);
      startActivity(intent);
      return true;
    } else if (preference == mDynamicWriteBackOn) {
      if (Helpers.readOneLine(DYNAMIC_DIRTY_WRITEBACK_PATH).equals("0")) {
        new CMDProcessor().su.runWaitFor("busybox echo 1 > " + DYNAMIC_DIRTY_WRITEBACK_PATH);
      } else {
        new CMDProcessor().su.runWaitFor("busybox echo 0 > " + DYNAMIC_DIRTY_WRITEBACK_PATH);
      }
      return true;
    } else if (preference == mDynamicWriteBackActive) {
      openDialog(
          getString(R.string.dynamic_writeback_active_title),
          0,
          5000,
          preference,
          DIRTY_WRITEBACK_ACTIVE_PATH,
          PREF_DIRTY_WRITEBACK_ACTIVE);
      return true;
    } else if (preference == mDynamicWriteBackSuspend) {
      openDialog(
          getString(R.string.dynamic_writeback_suspend_title),
          0,
          5000,
          preference,
          DIRTY_WRITEBACK_SUSPEND_PATH,
          PREF_DIRTY_WRITEBACK_SUSPEND);
      return true;
    } else if (preference == mVM) {
      Intent intent = new Intent(context, VMSettings.class);
      startActivity(intent);
      return true;
    } else if (preference == mWifiPM) {
      if (Helpers.readOneLine(WIFIPM_PATH).equals("0")) {
        new CMDProcessor().su.runWaitFor("busybox echo 1 > " + WIFIPM_PATH);
      } else {
        new CMDProcessor().su.runWaitFor("busybox echo 0 > " + WIFIPM_PATH);
      }
      return true;
    }
    return super.onPreferenceTreeClick(preferenceScreen, preference);
  }