package net.coding.program.project;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBar;
import android.widget.FrameLayout;
import net.coding.program.FileUrlActivity;
import net.coding.program.R;
import net.coding.program.common.ui.BaseActivity;
import net.coding.program.model.ProjectObject;
import net.coding.program.project.detail.ProjectActivity;
import net.coding.program.project.init.InitProUtils;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.Extra;
import org.androidannotations.annotations.OptionsItem;
import org.androidannotations.annotations.ViewById;
import org.androidannotations.annotations.res.StringArrayRes;
import org.json.JSONException;
import org.json.JSONObject;
@EActivity(R.layout.activity_project_home)
//@OptionsMenu(R.menu.menu_project_home)
public class ProjectHomeActivity extends BaseActivity {
public static final String BROADCAST_CLOSE = ProjectHomeActivity.class.getName() + ".close";
@Extra
ProjectObject mProjectObject;
@Extra
ProjectActivity.ProjectJumpParam mJumpParam;
@Extra
boolean mNeedUpdateList = false; // 需要更新项目列表的排序
@ViewById
FrameLayout container;
@StringArrayRes
String[] dynamic_type_params;
String mProjectUrl;
private Fragment mCurrentFragment;
@AfterViews
protected void initProjectHomeActivity() {
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
}
if (mProjectObject != null) {
initFragment();
} else if (mJumpParam != null) {
mProjectUrl = String.format(FileUrlActivity.HOST_PROJECT, mJumpParam.mUser, mJumpParam.mProject);
getNetwork(mProjectUrl, mProjectUrl);
} else {
finish();
}
}
private BroadcastReceiver refreshReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(BROADCAST_CLOSE)) {
finish();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BROADCAST_CLOSE);
registerReceiver(refreshReceiver, intentFilter);
}
@Override
protected void onDestroy() {
unregisterReceiver(refreshReceiver);
super.onDestroy();
}
@Override
public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException {
if (tag.equals(mProjectUrl)) {
if (code == 0) {
mProjectObject = new ProjectObject(respanse.getJSONObject("data"));
initFragment();
} else {
showErrorMsg(code, respanse);
}
} else if (tag.equals(PrivateProjectHomeFragment.HOST_VISTIT)) {
if (code == 0) {
sendBroadcast(new Intent(ProjectFragment.RECEIVER_INTENT_REFRESH_PROJECT));
} else {
showErrorMsg(code, respanse);
}
}
}
private void initFragment() {
if (mNeedUpdateList) {
String url = String.format(PrivateProjectHomeFragment.HOST_VISTIT, mProjectObject.getId());
getNetwork(url, PrivateProjectHomeFragment.HOST_VISTIT);
}
Fragment fragment;
if (mProjectObject.isPublic()) {
fragment = PublicProjectHomeFragment_.builder()
.mProjectObject(mProjectObject)
.build();
} else {
fragment = PrivateProjectHomeFragment_.builder()
.mProjectObject(mProjectObject)
.build();
}
getSupportFragmentManager()
.beginTransaction()
.add(R.id.container, fragment)
.commit();
mCurrentFragment = fragment;
}
@OptionsItem(android.R.id.home)
final protected void clickBack() {
if (mCurrentFragment instanceof BaseProjectHomeFragment) {
if (((BaseProjectHomeFragment) mCurrentFragment).isBackToRefresh()) {
InitProUtils.backIntentToMain(this);
return;
}
}
finish();
}
}