package net.basilwang; import static net.basilwang.dao.Preferences.CURRICULUM_TO_SHOW; import static net.basilwang.dao.Preferences.LOGON_ACCOUNT_ID; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import net.basilwang.dao.CurriculumService; import net.basilwang.entity.Curriculum; import net.basilwang.ui.widget.BlockView; import net.basilwang.ui.widget.BlocksLayout; import net.basilwang.ui.widget.HorizontalScrollViewListener; import net.basilwang.ui.widget.ObservableHorizontalScrollView; import net.basilwang.ui.widget.TimeRulerView; import android.graphics.Bitmap; import android.graphics.Canvas; import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.ScrollView; 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 WeekViewFragment extends SherlockFragment implements HorizontalScrollViewListener { static final String TAG = "WeekViewFragment"; // private ScrollView mScrollView; private BlocksLayout mBlocks; private View mNowView; private ObservableHorizontalScrollView mHeaderScroll = null; private ObservableHorizontalScrollView mClassScroll = null; private TimeRulerView mTimeRuler = null; private FrameLayout mWeekDayHeaderFrameLayout; CurriculumService curriculumService; List<Curriculum> curriculumList; private List<Curriculum> getCurriculumList() { String semesterValue = PreferenceManager.getDefaultSharedPreferences( this.getActivity()).getString(CURRICULUM_TO_SHOW, ""); int accountId = PreferenceManager.getDefaultSharedPreferences( this.getActivity()).getInt(LOGON_ACCOUNT_ID, 0); return this.curriculumService.getCurriculumList(semesterValue, accountId); } @Override public void onCreate(Bundle savedInstanceState) { // 2012-07-11 basilwang has its own menu this.setHasOptionsMenu(true); super.onCreate(savedInstanceState); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // if (Preferences.isWeekViewUnlocked(this.getActivity())) { SubMenu sub = menu.addSubMenu("周/天"); // sub.add(0, R.style.Theme_Sherlock, 0, R.string.weekview); // sub.add(0, R.style.Theme_Sherlock, 0, R.string.dayview); // sub.add(0, R.style.Theme_Sherlock_Light_DarkActionBar, 0, // "Light (Dark Action Bar)"); sub.setIcon(R.drawable.viewswitch); sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); // } // SubMenu sub1 = menu.addSubMenu("分享课表"); // sub1.setIcon(R.drawable.icon_share); // sub1.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); super.onCreateOptionsMenu(menu, inflater); } // 分享课表的部分 // @Override // public boolean onOptionsItemSelected(MenuItem item) { // if (item.getTitle().equals("分享课表")) { // Log.v("分享课表", "sdadsfdsfdgfdhg"); // // int width=mHeaderScroll.getWidth()-mTimeRuler.getWidth(); // // Bitmap bitmap = Bitmap.createBitmap(width, // // mClassScroll.getHeight(), Bitmap.Config.ARGB_8888); // // Canvas c = new Canvas(bitmap); // // mClassScroll.draw(c); // Bitmap bitmap = Bitmap.createBitmap(1000, // mHeaderScroll.getHeight(), Bitmap.Config.ARGB_8888); // Canvas c = new Canvas(bitmap); // mHeaderScroll.draw(c); // // Bitmap bitmap = Bitmap.createBitmap(mTimeRuler.getWidth(), // // mTimeRuler.getHeight(), Bitmap.Config.ARGB_8888); // // Canvas c = new Canvas(bitmap); // // mTimeRuler.draw(c); // // File file = new File(StaticAttachmentActivity.savePath); // if (!file.exists()) { // file.mkdir(); // } // File shareFile = new File(StaticAttachmentActivity.sharePicture); // if (shareFile.exists()) // shareFile.delete(); // FileOutputStream fos = null; // try { // fos = new FileOutputStream(shareFile); // bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); // } catch (FileNotFoundException e) { // e.printStackTrace(); // Log.v("error", e.toString()); // } // // } // return super.onOptionsItemSelected(item); // } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.weekview_fragment, container, false); mTimeRuler = (TimeRulerView) v.findViewById(R.id.blocks_ruler); mBlocks = (BlocksLayout) v.findViewById(R.id.blocks); mNowView = v.findViewById(R.id.blocks_now); mBlocks.setDrawingCacheEnabled(true); mBlocks.setAlwaysDrawnWithCacheEnabled(true); mHeaderScroll = (ObservableHorizontalScrollView) v .findViewById(R.id.header_scroll); mHeaderScroll.setHorizontalScrollViewListener(this); mClassScroll = (ObservableHorizontalScrollView) v .findViewById(R.id.horizontal_scroll); mClassScroll.setHorizontalScrollViewListener(this); mWeekDayHeaderFrameLayout = (FrameLayout) v .findViewById(R.id.week_day_container); curriculumService = new CurriculumService(this.getActivity()); curriculumList = getCurriculumList(); Log.v(TAG, "curriculumList length is" + curriculumList.size()); for (Curriculum c : curriculumList) { Integer column = c.getDayOfWeek() - 1; Log.v(TAG, "column is" + column); final String blockId = String.valueOf(c.getId()); final String title = c.getName(); final int start = c.getCurriculumIndex(); final int end = c.getCurriculumIndex() + c.getTimeSpan(); final boolean containsStarred = true; final BlockView blockView = new BlockView(this.getActivity(), c, blockId, title, start, end, containsStarred, column); // final int sessionsCount = // cursor.getInt(BlocksQuery.SESSIONS_COUNT); // if (sessionsCount > 0) { // blockView.setOnClickListener(this); // } else { // blockView.setFocusable(false); // blockView.setEnabled(false); // LayerDrawable buttonDrawable = (LayerDrawable) // blockView.getBackground(); // buttonDrawable.getDrawable(0).setAlpha(DISABLED_BLOCK_ALPHA); // buttonDrawable.getDrawable(2).setAlpha(DISABLED_BLOCK_ALPHA); // } mBlocks.addBlock(blockView); } return v; } @Override public void onScrollChanged(ObservableHorizontalScrollView scrollView, int x, int y, int oldx, int oldy) { if (scrollView == mHeaderScroll) { mClassScroll.scrollTo(x, y); } else if (scrollView == mClassScroll) { mHeaderScroll.scrollTo(x, y); } } }