Android Open Source - rsmonitor-heartrate Date Slider






From Project

Back to project page rsmonitor-heartrate.

License

The source code is released under:

GNU General Public License

If you think the Android project rsmonitor-heartrate 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 (C) 2011 Daniel Berndt - Codeus Ltd  -  DateSlider
 * //w ww.  ja  v  a 2 s  . co m
 * Class for setting up the dialog and initialsing the underlying
 * ScrollLayouts
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.googlecode.android.widgets.DateSlider;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.TimeZone;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.googlecode.android.widgets.DateSlider.TimeView.TimeTextView;
import com.renaultsport.heartrate.R;

public abstract class DateSlider extends Dialog {

//  private static String TAG = "DATESLIDER";
  
  protected OnDateSetListener onDateSetListener;
  protected Calendar mTime;
  protected TimeZone mTimeZone;
  protected TextView mTitleText;
  protected List<ScrollLayout> mScrollerList = new ArrayList<ScrollLayout>();
  protected LinearLayout mLayout;
  
  public DateSlider(Context context, OnDateSetListener l, Calendar calendar) {
    super(context);
    this.onDateSetListener = l;
    mTimeZone = calendar.getTimeZone();
    mTime = Calendar.getInstance(mTimeZone);
    mTime.setTimeInMillis(calendar.getTimeInMillis());
  }
  
  
  
  /**
   * Set up the dialog with all the views and their listeners
   */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    if (savedInstanceState!=null) {
      long time = savedInstanceState.getLong("time", mTime.getTimeInMillis());
      mTime.setTimeInMillis(time);
    }
    
    this.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.dateslider);
    this.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.dialogtitle);
    
    mTitleText = (TextView) this.findViewById(R.id.dateSliderTitleText);
    mLayout = (LinearLayout)findViewById(R.id.dateSliderMainLayout);

    Button okButton = (Button) findViewById(R.id.dateSliderOkButton);
    okButton.setOnClickListener(okButtonClickListener);

    Button cancelButton = (Button) findViewById(R.id.dateSliderCancelButton);
    cancelButton.setOnClickListener(cancelButtonClickListener);
    
    arrangeScroller(null);
  }
  
  /**
   * This method allows to change the displayed time of the slider(s).
   * this can be handy if you need to invoke the dialog several times
   * using OnPrepareDialog.
   * @param calendar the calendar object containing the new time
   */
  public void updateCalendar(Calendar calendar) {
    mTimeZone = calendar.getTimeZone();
    mTime = Calendar.getInstance(mTimeZone);
    mTime.setTimeInMillis(calendar.getTimeInMillis());
  }
  
  private android.view.View.OnClickListener okButtonClickListener = new android.view.View.OnClickListener() {
    public void onClick(View v) {
      if (onDateSetListener!=null)
        onDateSetListener.onDateSet(DateSlider.this, mTime);
      dismiss();
    }
  };
  
  private android.view.View.OnClickListener cancelButtonClickListener = new android.view.View.OnClickListener() {
    public void onClick(View v) {
      dismiss();
    }
  };
  
  /**
   * Sets the Scroll listeners for all ScrollLayouts in "mScrollerList"
   */
  protected void setListeners() {
    for (final ScrollLayout sl: mScrollerList) {
      sl.setOnScrollListener(
          new ScrollLayout.OnScrollListener() {    
            public void onScroll(long x) {
              mTime.setTimeInMillis(x);
              arrangeScroller(sl);
            }
          });
    }
    
  }
  
  @Override
  public Bundle onSaveInstanceState() {
    Bundle savedInstanceState = super.onSaveInstanceState();
    if (savedInstanceState==null) savedInstanceState = new Bundle();
    savedInstanceState.putLong("time", mTime.getTimeInMillis());
    return savedInstanceState;    
  }
  
  protected void arrangeScroller(ScrollLayout source) {
    setTitle();
    if (source!=null) {
      for (ScrollLayout scroller: mScrollerList) {
        if (scroller==source) continue;
        scroller.setTime(mTime.getTimeInMillis(),0);
      }
    }
  }
  
  /**
   * This method sets the title of the dialog
   */
  protected void setTitle() {
    if (mTitleText != null) {
      mTitleText.setText(getContext().getString(R.string.dateSliderTitle) + 
          String.format(": %te. %tB %tY", mTime,mTime,mTime)); 
    }
  }
  
  
  /**
   * Defines the interface which defines the methods of the OnDateSetListener
   */
  public interface OnDateSetListener {
    /**
     * this method is called when a date was selected by the user
     * @param view      the caller of the method
     * 
     */
    public void onDateSet(DateSlider view, Calendar selectedDate);
  }
  
  /**
   * This class has the purpose of telling the corresponding scroller, which values make up
   * a single TimeTextView element.   
   *
   */
  public abstract class Labeler {    

    /**
     * gets called once, when the scroller gets initialised
     * @param time
     * @return the TimeObject representing "time"
     */
    public TimeObject getElem(long time) {
      Calendar c = Calendar.getInstance(mTimeZone);
      c.setTimeInMillis(time);
      return timeObjectfromCalendar(c);
    }
    
    /**
     * returns a new TimeTextView instance, is only called a couple of times in the
     * initialisation process
     * 
     * @param context
     * @param isCenterView is true when the view is the central view
     * @return 
     */
    public TimeView createView(Context context, boolean isCenterView) {
      return new TimeTextView(context, isCenterView, 25);
    }
    
    /**
     * This method will be called constantly, whenever new date information is required
     * it receives a timestamps and adds "val" time units to that time and returns it as
     * a TimeObject
     * 
     * @param time
     * @param val
     * @return
     */
    public abstract TimeObject add(long time, int val);
    protected abstract TimeObject timeObjectfromCalendar(Calendar c);
  }
  
  /**
   * Very simple helper class that defines a time unit with a label (text) its start-
   * and end date 
   *
   */
  public static class TimeObject {
    public final CharSequence text;
    public final long startTime, endTime;
    public TimeObject(final CharSequence text, final long startTime, final long endTime) {
      this.text = text;
      this.startTime = startTime;
      this.endTime = endTime;
    }
  }
}




Java Source Code List

com.facebook.android.AsyncFacebookRunner.java
com.facebook.android.BaseDialogListener.java
com.facebook.android.BaseRequestListener.java
com.facebook.android.DialogError.java
com.facebook.android.FQLQuery.java
com.facebook.android.FacebookError.java
com.facebook.android.FacebookFunctions.java
com.facebook.android.Facebook.java
com.facebook.android.FbDialog.java
com.facebook.android.FieldsConnectionsDialog.java
com.facebook.android.FriendsGetProfilePics.java
com.facebook.android.FriendsList.java
com.facebook.android.GraphExplorer.java
com.facebook.android.IntentUriHandler.java
com.facebook.android.LoginButton.java
com.facebook.android.PermissionsDialog.java
com.facebook.android.Places.java
com.facebook.android.SessionEvents.java
com.facebook.android.SessionStore.java
com.facebook.android.TokenRefreshDialog.java
com.facebook.android.UpdateStatusResultDialog.java
com.facebook.android.UploadPhotoResultDialog.java
com.facebook.android.Util.java
com.facebook.android.Utility.java
com.googlecode.android.widgets.DateSlider.AlternativeDateSlider.java
com.googlecode.android.widgets.DateSlider.CustomDateSlider.java
com.googlecode.android.widgets.DateSlider.DateSlider.java
com.googlecode.android.widgets.DateSlider.DateTimeSlider.java
com.googlecode.android.widgets.DateSlider.DefaultDateSlider.java
com.googlecode.android.widgets.DateSlider.MonthYearDateSlider.java
com.googlecode.android.widgets.DateSlider.ScrollLayout.java
com.googlecode.android.widgets.DateSlider.TimeSlider.java
com.googlecode.android.widgets.DateSlider.TimeView.java
com.renaultsport.heartrate.ActivityMain.java
com.renaultsport.heartrate.ActivityRecord.java
com.renaultsport.heartrate.ActivitySplash.java
com.renaultsport.heartrate.ActivityUpload.java
com.renaultsport.heartrate.ActivityVideoReader.java
com.renaultsport.heartrate.ActivityWarning.java
com.renaultsport.heartrate.MainApplication.java
com.renaultsport.heartrate.utils.CaptureCamera.java
com.renaultsport.heartrate.utils.ClientThread.java
com.renaultsport.heartrate.utils.Constants.java
com.renaultsport.heartrate.utils.RunEncoder.java
team.stride.tabs.TabGroupActivity.java