/*
* Copyright 2010 Google Inc.
*
* 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.google.android.apps.iosched.ui;
import android.app.TabActivity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TabHost;
import com.AmishRobot.LedController.R;
import com.google.android.apps.iosched.util.MathUtils;
public class ScheduleActivity extends TabActivity {
// /** Flags used with {@link DateUtils#formatDateRange}. */
// private static final int TIME_FLAGS = DateUtils.FORMAT_SHOW_DATE
// | DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_ABBREV_WEEKDAY;
// private static final String TAG_TUE = "tuesday";
// private static final String TAG_WED = "wednesday";
// private static final String TAG_THU = "thursday";
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_schedule);
//
// ((TextView) findViewById(R.id.title_text)).setText(getTitle());
//
// final long wedStart = ParserUtils.parseTime("2010-05-19T00:00:00.000-07:00");
// final long thuStart = ParserUtils.parseTime("2010-05-20T00:00:00.000-07:00");
//
// setupBlocksTab(TAG_WED, wedStart);
// setupBlocksTab(TAG_THU, thuStart);
//
// final long now = System.currentTimeMillis();
// if (now >= thuStart) {
// getTabHost().setCurrentTabByTag(TAG_THU);
// } else {
// // Otherwise start with first day
// getTabHost().setCurrentTabByTag(TAG_WED);
// }
// }
public static class FlingableTabHost extends TabHost {
GestureDetector mGestureDetector;
Animation mRightInAnimation;
Animation mRightOutAnimation;
Animation mLeftInAnimation;
Animation mLeftOutAnimation;
public FlingableTabHost(Context context, AttributeSet attrs) {
super(context, attrs);
mRightInAnimation = AnimationUtils.loadAnimation(context, R.anim.slide_right_in);
mRightOutAnimation = AnimationUtils.loadAnimation(context, R.anim.slide_right_out);
mLeftInAnimation = AnimationUtils.loadAnimation(context, R.anim.slide_left_in);
mLeftOutAnimation = AnimationUtils.loadAnimation(context, R.anim.slide_left_out);
final int minScaledFlingVelocity = ViewConfiguration.get(context)
.getScaledMinimumFlingVelocity() * 10; // 10 = fudge by experimentation
mGestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
int tabCount = getTabWidget().getTabCount();
int currentTab = getCurrentTab();
if (Math.abs(velocityX) > minScaledFlingVelocity &&
Math.abs(velocityY) < minScaledFlingVelocity) {
final boolean right = velocityX < 0;
final int newTab = MathUtils.constrain(currentTab + (right ? 1 : -1),
0, tabCount - 1);
if (newTab != currentTab) {
// Somewhat hacky, depends on current implementation of TabHost:
// http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;
// f=core/java/android/widget/TabHost.java
View currentView = getCurrentView();
setCurrentTab(newTab);
View newView = getCurrentView();
newView.startAnimation(right ? mRightInAnimation : mLeftInAnimation);
currentView.startAnimation(
right ? mRightOutAnimation : mLeftOutAnimation);
}
}
return super.onFling(e1, e2, velocityX, velocityY);
}
});
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (mGestureDetector.onTouchEvent(ev)) {
return true;
}
return super.onInterceptTouchEvent(ev);
}
}
//
// private void setupBlocksTab(String tag, long startMillis) {
// final TabHost host = getTabHost();
//
// final long endMillis = startMillis + DateUtils.DAY_IN_MILLIS;
// final Uri blocksBetweenDirUri = Blocks.buildBlocksBetweenDirUri(startMillis, endMillis);
//
// final Intent intent = new Intent(Intent.ACTION_VIEW, blocksBetweenDirUri);
// intent.addCategory(Intent.CATEGORY_TAB);
//
// intent.putExtra(BlocksActivity.EXTRA_TIME_START, startMillis);
// intent.putExtra(BlocksActivity.EXTRA_TIME_END, endMillis);
//
// TimeZone.setDefault(UIUtils.CONFERENCE_TIME_ZONE);
// final String label = DateUtils.formatDateTime(this, startMillis, TIME_FLAGS);
// host.addTab(host.newTabSpec(tag)
// .setIndicator(buildIndicator(label))
// .setContent(intent));
// }
//
// /**
// * Build a {@link View} to be used as a tab indicator, setting the requested
// * string resource as its label.
// */
// private View buildIndicator(String text) {
// final TextView indicator = (TextView) getLayoutInflater().inflate(R.layout.tab_indicator,
// getTabWidget(), false);
// indicator.setText(text);
// return indicator;
// }
//
// public void onHomeClick(View v) {
// UIUtils.goHome(this);
// }
//
// public void onSearchClick(View v) {
// UIUtils.goSearch(this);
// }
}