package cn.scau.scautreasure.ui; import android.support.v4.view.MenuItemCompat; import android.view.MenuItem; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.UiThread; import cn.scau.scautreasure.R; import cn.scau.scautreasure.impl.ServerOnChangeListener; import cn.scau.scautreasure.widget.RefreshActionItem; /** * 可查询 Activity 的共享上层。 */ @EActivity public class CommonQueryActivity extends CommonActivity implements ServerOnChangeListener, RefreshActionItem.RefreshButtonListener{ protected static final int QUERY_FOR_EDUSYS = 0; protected static final int QUERY_FOR_LIBRARY = 1; private int queryTarget = QUERY_FOR_EDUSYS; protected RefreshActionItem mRefreshActionItem; /** * 建立这个加载虚函数,具体由下层实现。 */ void loadData(Object... param){ } /** * 检查查询目标账号的可用性,主要是检查 * 有没有保存账号。 */ @AfterViews void checkAccountAvailable(){ boolean startLoginActivity = false; if (queryTarget == QUERY_FOR_EDUSYS){ startLoginActivity = (app.eduSysPassword == null || app.eduSysPassword.equals("")); }else if (queryTarget == QUERY_FOR_LIBRARY){ startLoginActivity = (app.libPassword == null || app.libPassword.equals("")); } if (startLoginActivity) { int startTips = queryTarget == QUERY_FOR_EDUSYS ? R.string.start_tips_edusys : R.string.start_tips_library; Login_.intent(this).startTips(getString(startTips)).start(); this.finish(); } } @UiThread void beforeLoadData() { mRefreshActionItem.startProgress(); } @UiThread void afterLoadData(){ mRefreshActionItem.stopProgress(); } /** * 点击 Action Bar 的刷新事件。 * * @param refreshActionItem */ @Override public void onRefresh(RefreshActionItem refreshActionItem) { loadData(); } @Override public void onChangeServer() { loadData(); } @Override public boolean onCreateOptionsMenu(android.view.Menu menu) { getMenuInflater().inflate(R.menu.menu_refresh_item, menu); MenuItem item = menu.findItem(R.id.refresh_button); mRefreshActionItem = (RefreshActionItem) MenuItemCompat.getActionView(item); mRefreshActionItem.setMenuItem(item); mRefreshActionItem.setRefreshButtonListener(this); loadData(); return true; } /** * 设置需要查询的目标。 * * @param target */ protected void setQueryTarget(int target){ queryTarget = target; } }