package net.coding.program.project; import android.app.Activity; import android.content.Intent; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.readystatesoftware.viewbadger.BadgeView; import net.coding.program.R; import net.coding.program.common.Global; import net.coding.program.common.ImageLoadTool; import net.coding.program.common.RedPointTip; import net.coding.program.common.ui.BaseFragment; import net.coding.program.model.ProjectObject; import net.coding.program.project.init.InitProUtils; import net.coding.program.project.init.setting.ProjectSetActivity_; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EFragment; import org.androidannotations.annotations.FragmentArg; import org.androidannotations.annotations.ViewById; import org.json.JSONException; import org.json.JSONObject; @EFragment(R.layout.fragment_public_project_home) public abstract class BaseProjectHomeFragment extends BaseFragment { public static final String HOST_VISTIT = Global.HOST_API + "/project/%d/update_visit"; protected boolean isUpdateDynamic = false; @FragmentArg ProjectObject mProjectObject; @ViewById View recommendIcon; @ViewById ImageView projectIcon; @ViewById TextView projectName; @ViewById TextView description; @ViewById TextView projectAuthor; @ViewById View projectHeaderLayout; BadgeView dynamicBadge; private boolean isBackToRefresh = false; @AfterViews protected final void initBaseProjectHomeFragment() { iconfromNetwork(projectIcon, mProjectObject.icon, ImageLoadTool.optionsRounded2); projectName.setText(mProjectObject.name); projectAuthor.setText(mProjectObject.owner_user_name); if (mProjectObject.description.isEmpty()) { description.setText("未填写"); } else { description.setText(mProjectObject.description); } isEnableProjectSet(projectHeaderLayout); } private void isEnableProjectSet(View view) { if (mProjectObject.isMy()) { view.findViewById(R.id.projectHeaderLayout).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), ProjectSetActivity_.class); intent.putExtra("projectObject", mProjectObject); startActivityForResult(intent, InitProUtils.REQUEST_PRO_UPDATE); } }); } else { view.findViewById(R.id.iconRight).setVisibility(View.GONE); } } private void initHeadHead() { iconfromNetwork(projectIcon, mProjectObject.icon, ImageLoadTool.optionsRounded2); projectName.setText(mProjectObject.name); projectAuthor.setText(mProjectObject.owner_user_name); if (mProjectObject.description.isEmpty()) { description.setVisibility(View.GONE); } else { description.setVisibility(View.VISIBLE); description.setText(mProjectObject.description); } } public boolean isBackToRefresh() { return isBackToRefresh; } protected void setRedPointStyle(int buttonId, RedPointTip.Type type) { View item = getView().findViewById(buttonId); View redPoint = item.findViewById(R.id.badge); boolean show = RedPointTip.show(getActivity(), type); redPoint.setVisibility(show ? View.VISIBLE : View.GONE); } protected void markUsed(RedPointTip.Type type) { RedPointTip.markUsed(getActivity(), type); updateRedPoinitStyle(); } abstract void updateRedPoinitStyle(); @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == InitProUtils.REQUEST_PRO_UPDATE) { if (resultCode == Activity.RESULT_OK) { mProjectObject = (ProjectObject) data.getSerializableExtra("projectObject"); isBackToRefresh = true; initHeadHead(); } } super.onActivityResult(requestCode, resultCode, data); } protected final void updateDynamic() { String s = String.format(BaseProjectHomeFragment.HOST_VISTIT, mProjectObject.getId()); getNetwork(s, HOST_VISTIT, 0, mProjectObject.getId()); } @Override public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException { if (tag.equals(HOST_VISTIT)) { if (respanse.getInt("code") == 0) { int id = (int) data; InitProUtils.updateDynamic(getActivity(), id); Global.setBadgeView(dynamicBadge, 0); mProjectObject.setReadActivities(); } } } }