Android Open Source - advanced-tourist-map Seek Bar Preference






From Project

Back to project page advanced-tourist-map.

License

The source code is released under:

GNU General Public License

If you think the Android project advanced-tourist-map listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2010, 2011 mapsforge.org//from ww  w  .  ja v  a 2s  .  co  m
 *
 * This program is free software: you can redistribute it and/or modify it under the
 * terms of the GNU Lesser General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package org.muxe.advancedtouristmap;

import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.DialogPreference;
import android.preference.PreferenceManager;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.SeekBar.OnSeekBarChangeListener;

/**
 * This abstract class provides all code for a seek bar preference. Deriving classes only need
 * to set the current and maximum value of the seek bar. An optional text message above the seek
 * bar is also supported as well as an optional current value message below the seek bar.
 */
abstract class SeekBarPreference extends DialogPreference implements OnSeekBarChangeListener {
  private TextView currentValueTextView;
  private Editor editor;
  private LinearLayout linearLayout;
  private TextView messageTextView;
  private SeekBar preferenceSeekBar;

  /**
   * How much the value should increase when the seek bar is moved.
   */
  int increment = 1;

  /**
   * The maximum value of the seek bar.
   */
  int max;

  /**
   * Optional text message to display on top of the seek bar.
   */
  String messageText;

  /**
   * The SharedPreferences instance that is used.
   */
  final SharedPreferences preferencesDefault;

  /**
   * The current value of the seek bar.
   */
  int seekBarCurrentValue;

  /**
   * Create a new seek bar preference.
   * 
   * @param context
   *            the context of the seek bar preferences activity.
   * @param attrs
   *            A set of attributes (currently ignored).
   */
  SeekBarPreference(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.preferencesDefault = PreferenceManager.getDefaultSharedPreferences(context);
  }

  @Override
  public void onClick(DialogInterface dialog, int which) {
    // check if the "OK" button was pressed
    if (which == DialogInterface.BUTTON_POSITIVE) {
      // check if the value of the seek bar differs from the initial value
      if (this.seekBarCurrentValue != this.preferenceSeekBar.getProgress()) {
        // get the value of the seek bar and save it in the preferences
        this.seekBarCurrentValue = this.preferenceSeekBar.getProgress();
        this.editor = this.preferencesDefault.edit();
        this.editor.putInt(this.getKey(), this.seekBarCurrentValue);
        this.editor.commit();
      }
    }
  }

  @Override
  public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    if (this.currentValueTextView != null) {
      this.currentValueTextView.setText(getCurrentValueText(progress));
    }
  }

  @Override
  public void onStartTrackingTouch(SeekBar seekBar) {
    // do nothing
  }

  @Override
  public void onStopTrackingTouch(SeekBar seekBar) {
    // do nothing
  }

  @Override
  protected View onCreateDialogView() {
    // create a layout for the optional text messageText and the seek bar
    this.linearLayout = new LinearLayout(getContext());
    this.linearLayout.setOrientation(LinearLayout.VERTICAL);
    this.linearLayout.setPadding(20, 10, 20, 10);

    // check if a text message should appear above the seek bar
    if (this.messageText != null) {
      // create a text view for the text messageText
      this.messageTextView = new TextView(getContext());
      this.messageTextView.setText(this.messageText);
      this.messageTextView.setPadding(0, 0, 0, 20);
      // add the text message view to the layout
      this.linearLayout.addView(this.messageTextView);
    }

    // create the seek bar and set the maximum and current value
    this.preferenceSeekBar = new SeekBar(getContext());
    this.preferenceSeekBar.setOnSeekBarChangeListener(this);
    this.preferenceSeekBar.setMax(this.max);
    this.preferenceSeekBar.setProgress(Math.min(this.seekBarCurrentValue, this.max));
    this.preferenceSeekBar.setKeyProgressIncrement(this.increment);
    this.preferenceSeekBar.setPadding(0, 0, 0, 10);
    // add the seek bar to the layout
    this.linearLayout.addView(this.preferenceSeekBar);

    // create the text view for the current value below the seek bar
    this.currentValueTextView = new TextView(getContext());
    this.currentValueTextView.setText(getCurrentValueText(this.preferenceSeekBar
        .getProgress()));
    this.currentValueTextView.setGravity(Gravity.CENTER_HORIZONTAL);
    // add the current value text view to the layout
    this.linearLayout.addView(this.currentValueTextView);

    return this.linearLayout;
  }

  /**
   * Get the current value text.
   * 
   * @param progress
   *            the current progress level of the seek bar.
   * @return the new current value text
   */
  abstract String getCurrentValueText(int progress);
}




Java Source Code List

org.mapsforge.geocoding.Unchecked.java
org.mapsforge.geocoding.widget.CityCompletionAdapter.java
org.mapsforge.geocoding.widget.PlaceCompletionAdapter.java
org.mapsforge.geocoding.widget.RoadCompletionAdapter.java
org.mapsforge.geocoding.widget.RoadListAdapter.java
org.mapsforge.geocoding.widget.SqliteCompletionAdapter.java
org.mapsforge.geocoding.widget.State.java
org.muxe.advancedtouristmap.AdvancedTouristMapApplication.java
org.muxe.advancedtouristmap.AdvancedTouristMap.java
org.muxe.advancedtouristmap.BaseActivity.java
org.muxe.advancedtouristmap.CacheSizePreference.java
org.muxe.advancedtouristmap.EditPreferences.java
org.muxe.advancedtouristmap.FilePickerIconAdapter.java
org.muxe.advancedtouristmap.FilePicker.java
org.muxe.advancedtouristmap.InfoView.java
org.muxe.advancedtouristmap.LocationPicker.java
org.muxe.advancedtouristmap.MoveSpeedPreference.java
org.muxe.advancedtouristmap.PositionInfo.java
org.muxe.advancedtouristmap.Search.java
org.muxe.advancedtouristmap.SeekBarPreference.java
org.muxe.advancedtouristmap.Utility.java
org.muxe.advancedtouristmap.overlay.GenericOverlayItem.java
org.muxe.advancedtouristmap.overlay.GenericOverlay.java
org.muxe.advancedtouristmap.overlay.PoiOverlayItem.java
org.muxe.advancedtouristmap.overlay.PositionOverlayItem.java
org.muxe.advancedtouristmap.overlay.WikiOverlayItem.java
org.muxe.advancedtouristmap.poi.PoiBrowserActivity.java
org.muxe.advancedtouristmap.poi.PoiOrCategory.java
org.muxe.advancedtouristmap.routing.AngleCalc.java
org.muxe.advancedtouristmap.routing.DecisionOverlay.java
org.muxe.advancedtouristmap.routing.DecisionPoint.java
org.muxe.advancedtouristmap.routing.RouteCalculator.java
org.muxe.advancedtouristmap.routing.RouteList.java
org.muxe.advancedtouristmap.routing.Route.java
org.muxe.advancedtouristmap.sourcefiles.AddressFile.java
org.muxe.advancedtouristmap.sourcefiles.FileManagerActivity.java
org.muxe.advancedtouristmap.sourcefiles.FileManager.java
org.muxe.advancedtouristmap.sourcefiles.MapBundle.java
org.muxe.advancedtouristmap.sourcefiles.MapFile.java
org.muxe.advancedtouristmap.sourcefiles.PoiFile.java
org.muxe.advancedtouristmap.sourcefiles.RoutingFile.java
org.muxe.advancedtouristmap.sourcefiles.SourceFile.java
org.muxe.advancedtouristmap.wikipedia.AbstractWikiArticle.java
org.muxe.advancedtouristmap.wikipedia.ArticleRetrieverFactory.java
org.muxe.advancedtouristmap.wikipedia.ArticleRetriever.java
org.muxe.advancedtouristmap.wikipedia.GeonamesRetriever.java
org.muxe.advancedtouristmap.wikipedia.OnlineWikiArticle.java
org.muxe.advancedtouristmap.wikipedia.WikiArticleInterface.java
org.muxe.advancedtouristmap.wikipedia.WikilocationRetriever.java