package net.basilwang; import static net.basilwang.dao.Preferences.LOGON_ACCOUNT_ID; import java.util.List; import net.basilwang.dao.AccountService; import net.basilwang.dao.Preferences; import net.basilwang.dao.ScoreService; import net.basilwang.entity.Score; import net.basilwang.listener.AddSubMenuListener; import net.basilwang.listener.SendStudentNumListener; import net.basilwang.listener.ShowTipListener; import net.basilwang.sever.SendStudentNumberTask; import net.basilwang.utils.PreferenceUtils; import net.basilwang.utils.TipUtils; import net.youmi.android.AdManager; import net.youmi.android.AdView; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import br.com.dina.ui.model.BasicItem; import br.com.dina.ui.model.ViewItem; import br.com.dina.ui.widget.UITableView; import com.actionbarsherlock.app.SherlockFragment; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; public class ScoreFragment extends SherlockFragment implements AddSubMenuListener, ShowTipListener ,SendStudentNumListener{ private ScoreService scoreService; private UITableView mTableView; private View scoreView; private String semesterIndex; public void refresh() { /* * If you encounter a bug in this method,you can try to add this line * below mTableView.clear(); mTableView.commit(); */ populateList(mTableView, scoreView); } public void onActivityResult(int request, int result, Intent intent) { switch (request) { default: refresh(); break; } } public void initView(LayoutInflater inflater, ViewGroup container) { semesterIndex = PreferenceManager.getDefaultSharedPreferences( this.getActivity()).getString(Preferences.SCORE_SEMESTER_NAME, "2011-2012|1"); scoreService = new ScoreService(this.getActivity()); scoreView = inflater.inflate(R.layout.score_fragment, container, false); mTableView = (UITableView) scoreView.findViewById(R.id.scoreView); SemesterArrayAdapter semesterAdapter = new SemesterArrayAdapter( this.getActivity(), android.R.layout.simple_spinner_item); semesterAdapter .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); } @Override public void onCreate(Bundle savedInstanceState) { // 2012-07-11 basilwang has its own menu this.setHasOptionsMenu(true); super.onCreate(savedInstanceState); if (new AccountService(getActivity()).getAccounts().size() <= 0) { Toast.makeText(getActivity(), "请绑定您的学号", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(getActivity(), LogonPreferenceActivity.class); startActivity(intent); } } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { AddSubMenu subMeun = new AddSubMenu(menu, getActivity(), this); subMeun.setTipPhotoAndPreferKey(R.drawable.curriculumdownload_tip, Preferences.SOCRE_DOWNLOAD_TIP); subMeun.setSubMenuItemListener(new OnItemSelectedListenerImpl(), new DownloadOnClickListener(this, "task", "score")); super.onCreateOptionsMenu(menu, inflater); } public int getSpinnerDefaultPosition() { return PreferenceManager .getDefaultSharedPreferences(this.getActivity()).getInt( Preferences.SCORE_SPINNER_SELECTION, -1); } public void showTipIfNecessary() { int scoreTip = PreferenceManager.getDefaultSharedPreferences( this.getActivity()).getInt(Preferences.SCORE_TIP_SHOW, 0); if (scoreTip == 0) { TipUtils.showTipIfNecessary(this.getActivity(), R.drawable.downloadsetting_tip, this); } } public void dismissTip() { PreferenceUtils.modifyIntValueInPreferences(getActivity(), Preferences.SCORE_TIP_SHOW, 1); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { showTipIfNecessary(); initView(inflater, container); if (!Preferences.isAdClosed(this.getActivity())) { // 应用Id 应用密码 广告请求间隔(s) 测试模式 AdManager.init(this.getActivity(), "2fc95b356bb979ae", "8b94f727980f7158", 30, false); LinearLayout adViewLayout = (LinearLayout) scoreView .findViewById(R.id.adViewLayout); adViewLayout.addView(new AdView(this.getActivity()), new LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); } populateList(mTableView, scoreView); return scoreView; } public void setSemesterIndex(String semesterIndex) { this.semesterIndex = semesterIndex; } protected void populateList(UITableView mTableView, View parent) { mTableView.clear(); int accountId = PreferenceManager.getDefaultSharedPreferences( this.getActivity()).getInt(LOGON_ACCOUNT_ID, 0); String[] semesterSettings = semesterIndex.split("|"); if (semesterSettings.length == 1) { mTableView.addBasicItem(new BasicItem(getResources().getString( R.string.noaccount), "", false)); } else { List<Score> scoreList = this.scoreService.getScores(semesterIndex, accountId); if (scoreList.size() == 0) { mTableView.addBasicItem(new BasicItem(getResources().getString( R.string.noscore), "", false)); } else { sendSteudentNum(); for (Score c : scoreList) { RelativeLayout v = new ScoreItem(c.getScore(), c.getCourseName(), c.getScorePoint()) .getRelativeLayout(); ViewItem v2 = new ViewItem(v); v2.setClickable(false); mTableView.addViewItem(v2); } } } mTableView.commit(); } private class OnItemSelectedListenerImpl implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String value = parent.getItemAtPosition(position).toString(); value = value.replace("第", "|"); value = value.replace("学期", ""); PreferenceUtils.modifyIntValueInPreferences(getActivity(), Preferences.SCORE_SPINNER_SELECTION, position); PreferenceUtils.modifyStringValueInPreferences(getActivity(), Preferences.SCORE_SEMESTER_NAME, value); setSemesterIndex(value); refresh(); } @Override public void onNothingSelected(AdapterView<?> arg0) { } } private class ScoreItem { private TextView name; private TextView point; private TextView score; private RelativeLayout v; public ScoreItem(int score, String name, float scorePoint) { initTextViews(); this.name.setText(name); this.point.setText("绩点:" + String.valueOf(scorePoint)); this.score.setText("成绩:" + String.valueOf(score)); } public void initTextViews() { LayoutInflater mInflater = (LayoutInflater) getActivity() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = (RelativeLayout) mInflater.inflate( R.layout.custom_view_for_score, null); this.name = (TextView) v.findViewById(R.id.score_name); this.point = (TextView) v.findViewById(R.id.point); this.score = (TextView) v.findViewById(R.id.score); } public RelativeLayout getRelativeLayout() { return v; } } @Override public void sendSteudentNum() { if (!PreferenceUtils.getPreferHadSendUserNo(getActivity())) { String token = PreferenceUtils.getPreferToken(getActivity()); String userno = getStudentNum(); SendStudentNumberTask sendTask = new SendStudentNumberTask(); sendTask.execute(token, userno); PreferenceUtils.modifyBooleanValueInPreferences(getActivity(), Preferences.HAD_SEND_USERNO, true); } } @Override public String getStudentNum() { return new AccountService(getActivity()).getAccountById( PreferenceUtils.getPreferAccountId(getActivity())).getUserno(); } }