package net.basilwang; import static net.basilwang.dao.Preferences.CEMESTER_START_PREFERENCES; import java.util.ArrayList; import java.util.List; import net.basilwang.dao.ClassIndexAdapter; import net.basilwang.dao.CurriculumAdapter; import android.os.Bundle; import android.os.Parcelable; import android.preference.PreferenceManager; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.text.format.Time; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.TextView; import net.basilwang.R; import com.actionbarsherlock.app.SherlockFragment; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.SubMenu; public class CurriculumFragment extends SherlockFragment { private List<ListView> list; private static final int ROW_ID_REQUEST = 0x10000; // private final int REAL_LIST_NUMS=7; private ViewPager weekPager; // private UITableView mTableView; private WeekViewPagerAdapter weekAdapter; private int focusedPage = 0; // final private int thisweek=4; private int mCurrentWeek; // 2012-06-07 basilwang change when tapped private Time timeSelected = new Time(); // 2012-06-07 basilwang won't change private Time todayTime = new Time(); private Time showFromTime = new Time(); // private int weekSpan; private class WeekViewPagerAdapter extends PagerAdapter { ViewPager container; private View addWeekViewAt(int position, int week) { // final View mv = new View(CurriculumViewPagerActivity.this); // mv.setLayoutParams(new ViewSwitcher.LayoutParams( // android.view.ViewGroup.LayoutParams.MATCH_PARENT, // android.view.ViewGroup.LayoutParams.MATCH_PARENT)); // mv.setSelectedTime(time); View v = CurriculumFragment.this.getActivity().getLayoutInflater() .inflate(R.layout.mycurriculum, container, false); v.setTag(week); container.addView(v, position); if (week == mCurrentWeek) { reloadData(v); } return v; } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeViewAt(position); } @Override public void finishUpdate(View container) { } @Override public int getCount() { return 3; } @Override public Object instantiateItem(View container, int position) { this.container = (ViewPager) container; // int day=0; final Time time = new Time(); time.set(System.currentTimeMillis()); time.weekDay += (position - 1); // add the offset from the center // time // day += (position - 1); // add the offset from the center time int week = mCurrentWeek + (position - 1); return addWeekViewAt(position, week); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } private View removeDayViewAt(ViewPager container, int position) { final View mv = (View) container.getChildAt(position); container.removeViewAt(position); return mv; } @Override public void restoreState(Parcelable state, ClassLoader loader) { } @Override public Parcelable saveState() { return null; } @Override public void startUpdate(View container) { } } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { SubMenu sub = menu.addSubMenu("周/天"); // sub.add(0, R.style.Theme_Sherlock, 0, R.string.weekview); sub.add(0, R.style.Theme_Sherlock_Light, 0, R.string.dayview); // sub.add(0, R.style.Theme_Sherlock_Light_DarkActionBar, 0, // "Light (Dark Action Bar)"); sub.getItem().setShowAsAction( MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); super.onCreateOptionsMenu(menu, inflater); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // timeSelected.setToNow(); todayTime.setToNow(); showFromTime.setToNow(); long millis = PreferenceManager.getDefaultSharedPreferences( this.getActivity()).getLong(CEMESTER_START_PREFERENCES, 0); if (millis != 0) { showFromTime.set(millis); } mCurrentWeek = net.basilwang.utils.DateUtils.getWeekSpan(showFromTime, todayTime); View v = inflater.inflate(R.layout.curriculum_viewpager, container, false); // curriculumService=new CurriculumService(this.getActivity()); weekAdapter = new WeekViewPagerAdapter(); weekPager = (ViewPager) v.findViewById(R.id.pager); weekPager.setAdapter(weekAdapter); weekPager.setCurrentItem(1, false); weekPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageScrollStateChanged(int state) { if (state == ViewPager.SCROLL_STATE_IDLE) { final int oldLeftDay = Integer.valueOf(((View) weekPager .getChildAt(0)).getTag().toString()); final int oldCenterDay = Integer.valueOf(((View) weekPager .getChildAt(1)).getTag().toString()); int oldRightDay; if (weekPager.getChildAt(2) != null) oldRightDay = Integer.valueOf(((View) weekPager .getChildAt(2)).getTag().toString()); else oldRightDay = 0; Log.v("test", oldLeftDay + "" + oldCenterDay + "" + oldRightDay); if (focusedPage == 0) { // HistoryMonthActivity.this.setTitle(Utils // .formatMonthYear(HistoryMonthActivity.this, // oldTopTime)); int week = oldLeftDay; // day=(day==1?REAL_LIST_NUMS:day-1); week = week - 1; // TODO: load and switch shown events ((View) weekPager.getChildAt(0)).setTag(week); ((View) weekPager.getChildAt(1)).setTag(oldLeftDay); ((View) weekPager.getChildAt(2)).setTag(oldCenterDay); } else if (focusedPage == 2) { // HistoryMonthActivity.this.setTitle(Utils // .formatMonthYear(HistoryMonthActivity.this, // oldBottomTime)); int week = oldRightDay; // day=(day%REAL_LIST_NUMS==0?1:day+1); week = week + 1; // TODO: load and switch shown events ((View) weekPager.getChildAt(0)).setTag(oldCenterDay); ((View) weekPager.getChildAt(1)).setTag(oldRightDay); ((View) weekPager.getChildAt(2)).setTag(week); } // always set to middle page to continue to be able to // scroll up/down weekPager.setCurrentItem(1, false); reloadData(weekPager.getChildAt(1)); } } @Override public void onPageSelected(int position) { focusedPage = position; // View fragment=dayPager.getChildAt(position); // TextView tv=(TextView)fragment.findViewById(R.id.test); // tv.setText(fragment.getTag().toString()); // ListView // list=(ListView)fragment.findViewById(R.id.dayviewlist); // CurriculumAdapter adapter = new // CurriculumAdapter(Integer.valueOf(fragment.getTag().toString()), // CurriculumViewPagerActivity.this); // list.setAdapter(adapter); } }); return v; } @Override public void onCreate(Bundle savedInstanceState) { // 2012-07-11 basilwang has its own menu this.setHasOptionsMenu(true); super.onCreate(savedInstanceState); } private void reloadData(View fragment) { loadClassIndex(fragment); int week = Integer.valueOf(fragment.getTag().toString()); TextView tv = (TextView) (fragment.findViewById(R.id.weeknumber)); tv.setText("第" + week + "周"); // 2012-06-04 basilwang onCreateView will be called on every attach,so // we initialize list every time. list = new ArrayList<ListView>(); list.add((ListView) fragment.findViewById(R.id.day1)); list.add((ListView) fragment.findViewById(R.id.day2)); list.add((ListView) fragment.findViewById(R.id.day3)); list.add((ListView) fragment.findViewById(R.id.day4)); list.add((ListView) fragment.findViewById(R.id.day5)); list.add((ListView) fragment.findViewById(R.id.day6)); list.add((ListView) fragment.findViewById(R.id.day7)); // OnItemLongClickListener listener = new OnItemLongClickListener() { // // @Override // public boolean onItemLongClick(AdapterView<?> parent, View view, // int position, long id) { // long t = parent.getAdapter().getItemId(position); // // Toast.makeText(getApplicationContext(), // // String.valueOf(t), Toast.LENGTH_SHORT).show(); // Intent intent = new Intent( // CurriculumFragment.this.getActivity(), // EditCurriculumActivity.class); // intent.putExtra("g", t); // startActivityForResult(intent, ROW_ID_REQUEST); // return false; // } // }; // for (int i = 0; i < 7; i++) { // CurriculumAdapter adapter = new CurriculumAdapter(week, i + 1, // this.getActivity()); // list.get(i).setAdapter(adapter); // list.get(i).setOnItemLongClickListener(listener); // } for (int i = 0; i < 7; i++) { CurriculumAdapter adapter = new CurriculumAdapter(week, i + 1, this.getActivity()); list.get(i).setAdapter(adapter); } } private void loadClassIndex(View fragment) { ListView classindexView = (ListView) fragment .findViewById(R.id.classindex); classindexView.setAdapter(new ClassIndexAdapter(this.getActivity())); } // public void onActivityResult(int request, int result, Intent intent) { // switch (request) { // case ROW_ID_REQUEST: // reloadData(); // break; // } // } // // // // // // 2012-04-12 basilwang refresh when click tab // public void onResume() { // super.onResume(); // reloadData(); // } }