public void close() {
   myScreen.getDialog().dismiss();
   ZLPreferenceActivity.this.getListView().invalidateViews();
 }
Esempio n. 2
0
  @Override
  public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
    // customize the sub-preference title according the selected profile
    String title = "";
    if (preference.getKey() != null
        && preference instanceof PreferenceScreen
        && SettingsActivity.SCREEN_ID_NAVIGATION_SETTINGS.equals(preference.getKey())) {
      final ApplicationMode appMode = osmandSettings.getApplicationMode();
      PreferenceScreen scr = (PreferenceScreen) preference;
      title = scr.getTitle().toString();
      if (title.startsWith("-")) {
        title = title.substring(1);
      }
      Builder builder = new AlertDialog.Builder(this);
      View view = getLayoutInflater().inflate(R.layout.navigate_mode, null);
      builder.setView(view);
      final AlertDialog dlg = builder.show();

      final Button[] buttons = new Button[ApplicationMode.values().length];
      buttons[ApplicationMode.CAR.ordinal()] = (Button) view.findViewById(R.id.CarButton);
      buttons[ApplicationMode.BICYCLE.ordinal()] = (Button) view.findViewById(R.id.BicycleButton);
      buttons[ApplicationMode.PEDESTRIAN.ordinal()] =
          (Button) view.findViewById(R.id.PedestrianButton);
      final Dialog scrDialog = scr.getDialog();
      final String tlt = "   " + title;
      for (int i = 0; i < buttons.length; i++) {
        if (buttons[i] != null) {
          final int ind = i;
          final Button b = buttons[i];
          b.setOnClickListener(
              new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                  ApplicationMode selected = ApplicationMode.values()[ind];
                  osmandSettings.APPLICATION_MODE.set(selected);
                  updateAllSettings();
                  scrDialog.setTitle(
                      tlt + " [" + selected.toHumanString(SettingsActivity.this) + "]");
                  dlg.dismiss();
                }
              });
        }
      }
      scrDialog.setTitle(tlt + " [" + appMode + "] ");
      scr.getDialog()
          .setOnDismissListener(
              new OnDismissListener() {
                @Override
                public void onDismiss(DialogInterface dialog) {
                  osmandSettings.APPLICATION_MODE.set(appMode);
                  updateAllSettings();
                }
              });
    } else if (preference instanceof PreferenceScreen) {
      final PreferenceScreen scr = (PreferenceScreen) preference;
      title = scr.getTitle().toString();
      scr.getDialog().setTitle("   " + title);
    }
    if (preference instanceof PreferenceScreen) {
      final PreferenceScreen scr = (PreferenceScreen) preference;
      CustomTitleBarView titleBar =
          new CustomTitleBarView(title, R.drawable.tab_settings_screen_icon, null) {
            @Override
            public void backPressed() {
              scr.getDialog().dismiss();
            }
          };

      View titleView = getLayoutInflater().inflate(titleBar.getTitleBarLayout(), null);
      titleBar.init(titleView);
      // View decorView = scr.getDialog().getWindow().getDecorView();
      // LinearLayout ll = new LinearLayout(titleView.getContext());
      // scr.getDialog().getWindow().setContentView(ll);
      View dv = scr.getDialog().getWindow().getDecorView();
      ListView ls = (ListView) dv.findViewById(android.R.id.list);
      if (ls != null) {
        ls.addFooterView(titleView);
      }

      // LayoutParams lp = new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,
      // LayoutParams.WRAP_CONTENT);
      // scr.getDialog().addContentView(titleView, lp);

      // ll.setOrientation(LinearLayout.VERTICAL);
      // ll.addView(titleView);
      // ll.addView(decorView);

    }

    if (preference == applicationDir) {
      return true;
    }
    return super.onPreferenceTreeClick(preferenceScreen, preference);
  }