Android Open Source - rsmonitor-heartrate Time View






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
 * //from w ww . j ava 2  s. c om
 * This interface represents Views that are put onto the ScrollLayout
 *
 * 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.Calendar;

import android.content.Context;
import android.graphics.Typeface;
import android.util.TypedValue;
import android.view.Gravity;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.googlecode.android.widgets.DateSlider.DateSlider.TimeObject;

/**
 * This interface represents the views that will settle the ScrollLayout. Each element has to deal
 * with its label via the setText method and needs to contain the start and end time of the element.
 * Moreover this interface contains three implementations one simple TextView, A two-row 
 * LinearLayout and a LinearLayout which colors Sundays red.
 *
 */
public interface TimeView {

  public void setVals(TimeObject to);
  public void setVals(TimeView other);
  public String getTimeText();
  public long getStartTime();
  public long getEndTime();
  
  /**
   * This is a simple implementation of a TimeView which realised through a TextView.
   *
   */
  public static class TimeTextView extends TextView implements TimeView {
    private long endTime, startTime;
    
    /**
     * constructor 
     * @param context
     * @param isCenterView true if the element is the centered view in the ScrollLayout
     * @param textSize text size in dps
     */
    public TimeTextView(Context context, boolean isCenterView, int textSize) {
      super(context);
      setupView(isCenterView, textSize);
    }
  
    /**
     * this method should be overwritten by inheriting classes to define its own look and feel
     * @param isCenterView true if the element is in the center of the scrollLayout
     * @param textSize textSize in dps
     */  
    protected void setupView(boolean isCenterView, int textSize) {
      setGravity(Gravity.CENTER);
      setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
      if (isCenterView) {
        setTypeface(Typeface.DEFAULT_BOLD);
        setTextColor(0xFF333333);
      } else {
        setTextColor(0xFF666666);
      }
    }
    
    public void setVals(DateSlider.TimeObject to) {
      setText(to.text);
      this.startTime = to.startTime;
      this.endTime = to.endTime;
    }
    
    public void setVals(TimeView other) {
      setText(other.getTimeText());
      startTime = other.getStartTime();
      endTime = other.getEndTime();
    }

    public long getStartTime() {
      return this.startTime;
    }

    public long getEndTime() {
      return this.endTime;
    }

    public String getTimeText() {
      return getText().toString();
    }
  }
  
  /**
   * This is a more complex implementation of the TimeView consisting of a LinearLayout with
   * two TimeViews.
   *
   */
  public static class TimeLayoutView extends LinearLayout implements TimeView {
    protected long endTime, startTime;
    protected String text;
    protected boolean isCenter=false;
    protected TextView topView, bottomView;
    
    /**
     * constructor 
     * 
     * @param context
     * @param isCenterView true if the element is the centered view in the ScrollLayout 
     * @param topTextSize  text size of the top TextView in dps
     * @param bottomTextSize  text size of the bottom TextView in dps
     * @param lineHeight  LineHeight of the top TextView
     */
    public TimeLayoutView(Context context, boolean isCenterView, int topTextSize, int bottomTextSize, float lineHeight) {
      super(context);
      setupView(context, isCenterView, topTextSize, bottomTextSize, lineHeight);
    }
    
    /**
     * Setting up the top TextView and bottom TextVew
     * @param context
     * @param isCenterView true if the element is the centered view in the ScrollLayout 
     * @param topTextSize  text size of the top TextView in dps
     * @param bottomTextSize  text size of the bottom TextView in dps
     * @param lineHeight  LineHeight of the top TextView
     */
    protected void setupView(Context context, boolean isCenterView, int topTextSize, int bottomTextSize, float lineHeight) {
      setOrientation(VERTICAL);
      topView = new TextView(context);
      topView.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.BOTTOM);
      topView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, topTextSize);
      bottomView = new TextView(context);
      bottomView.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.TOP);
      bottomView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, bottomTextSize);
      topView.setLineSpacing(0, lineHeight);
      if (isCenterView) {
        isCenter = true;
        topView.setTypeface(Typeface.DEFAULT_BOLD);
        topView.setTextColor(0xFF333333);
        bottomView.setTypeface(Typeface.DEFAULT_BOLD);
        bottomView.setTextColor(0xFF444444);
        topView.setPadding(0, 5-(int)(topTextSize/15.0), 0, 0);
      } else {
        topView.setPadding(0, 5, 0, 0);
        topView.setTextColor(0xFF666666);
        bottomView.setTextColor(0xFF666666);
      }
      addView(topView);addView(bottomView);
      
    }

    public void setVals(TimeObject to) {
      text = to.text.toString();
      setText();
      this.startTime = to.startTime;
      this.endTime = to.endTime;
    }
    
    public void setVals(TimeView other) {
      text = other.getTimeText().toString();
      setText();
      startTime = other.getStartTime();
      endTime = other.getEndTime();      
    }
    
    /**
     * sets the TextView texts by splitting the text into two 
     */
    protected void setText() {
      String[] splitTime = text.split(" ");
      topView.setText(splitTime[0]);
      bottomView.setText(splitTime[1]);
    }

    public String getTimeText() {
      return text;
    }

    public long getStartTime() {
      return startTime;
    }

    public long getEndTime() {
      return endTime;
    }
    
  }

  /**
   * More complex implementation of the TimeView which is based on the TimeLayoutView.
   * Sundays are colored red in here.
   *
   */
  public static class DayTimeLayoutView extends TimeLayoutView {

    protected boolean isSunday=false;
    
    /**
     * Constructor
     * @param context
     * @param isCenterView true if the element is the centered view in the ScrollLayout 
     * @param topTextSize  text size of the top TextView in dps
     * @param bottomTextSize  text size of the bottom TextView in dps
     * @param lineHeight  LineHeight of the top TextView
     */
    public DayTimeLayoutView(Context context, boolean isCenterView,
        int topTextSize, int bottomTextSize, float lineHeight) {
      super(context, isCenterView, topTextSize, bottomTextSize, lineHeight);
    }
    

    public void setVals(TimeObject to) {
      super.setVals(to);
      // TODO: make it timeZone dependent!
      Calendar c = Calendar.getInstance();
      c.setTimeInMillis(to.endTime);
      if (c.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY && !isSunday) {
        isSunday=true;
        colorMeSunday();
      } else if (isSunday && c.get(Calendar.DAY_OF_WEEK)!=Calendar.SUNDAY) {
        isSunday=false;
        colorMeWorkday();
      }
    }
    
    /**
     * this method is called when the current View takes a Sunday as time unit
     */
    protected void colorMeSunday() {
      if (isCenter) {
        bottomView.setTextColor(0xFF773333);
        topView.setTextColor(0xFF553333);
      }
      else {
        bottomView.setTextColor(0xFF442222);
        topView.setTextColor(0xFF553333);          
      }
    }
    

    /**
     * this method is called when the current View takes no Sunday as time unit
     */
    protected void colorMeWorkday() {
      if (isCenter) {
        topView.setTextColor(0xFF333333);
        bottomView.setTextColor(0xFF444444);
      } else {
        topView.setTextColor(0xFF666666);
        bottomView.setTextColor(0xFF666666);          
      }      
    }
    
    public void setVals(TimeView other) {
      super.setVals(other);
      DayTimeLayoutView otherDay = (DayTimeLayoutView) other;
      if (otherDay.isSunday && !isSunday) {
        isSunday = true;
        colorMeSunday();
      } else if (isSunday && !otherDay.isSunday) {
        isSunday = false;
        colorMeWorkday();
      }
    }
    
  }
}




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