package net.coding.program.project.init.setting;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AlertDialog;
import android.text.Editable;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.loopj.android.http.RequestParams;
import net.coding.program.R;
import net.coding.program.common.Global;
import net.coding.program.common.ImageLoadTool;
import net.coding.program.common.enter.SimpleTextWatcher;
import net.coding.program.common.photopick.CameraPhotoUtil;
import net.coding.program.common.ui.BaseFragment;
import net.coding.program.common.umeng.UmengEvent;
import net.coding.program.common.util.FileUtil;
import net.coding.program.model.ProjectObject;
import net.coding.program.project.init.InitProUtils;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Click;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.OptionsMenu;
import org.androidannotations.annotations.ViewById;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
/**
* Created by jack wang on 2015/3/31.
* 项目设置页面
*/
@EFragment(R.layout.init_fragment_project_set)
@OptionsMenu(R.menu.menu_fragment_create)
public class ProjectSetFragment extends BaseFragment {
public static final int RESULT_REQUEST_PHOTO = 3003;
private static final String TAG = "ProjectSetFragment";
final String host = Global.HOST_API + "/project";
private final int RESULT_REQUEST_PHOTO_CROP = 3006;
ProjectObject mProjectObject;
String iconPath;
boolean isBackToRefresh = false;
MenuItem mMenuSave;
@ViewById
ImageView projectIcon;
@ViewById
View iconPrivate;
@ViewById
TextView projectName;
@ViewById
EditText description;
@ViewById
View item;
@ViewById
View itemTransfer;
TextView advanceText;
private Uri fileUri;
private Uri fileCropUri;
@AfterViews
protected void init() {
mProjectObject = (ProjectObject) getArguments().getSerializable("projectObject");
((TextView) itemTransfer.findViewById(R.id.title)).setText("项目转让");
advanceText = (TextView) item.findViewById(R.id.title);
advanceText.setText("删除项目");
iconfromNetwork(projectIcon, mProjectObject.icon, ImageLoadTool.optionsRounded2);
projectName.setText(mProjectObject.name);
description.setText(mProjectObject.description);
if (!mProjectObject.isPublic()) {
iconPrivate.setVisibility(View.VISIBLE);
}
description.addTextChangedListener(new SimpleTextWatcher() {
@Override
public void afterTextChanged(Editable s) {
updateSendButton();
}
});
Global.popSoftkeyboard(getActivity(), description, false);
}
@Click
void projectIcon() {
new AlertDialog.Builder(getActivity())
.setTitle("选择图片")
.setCancelable(true)
.setItems(R.array.camera_gallery, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == 0) {
camera();
} else {
photo();
}
}
})
.show();
}
private void camera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = CameraPhotoUtil.getOutputMediaFileUri();
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(intent, RESULT_REQUEST_PHOTO);
}
private void photo() {
Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_REQUEST_PHOTO);
}
@Click
public void item() {
ProjectAdvanceSetActivity_
.intent(this)
.mProjectObject(mProjectObject)
.start();
}
@Click
public void itemTransfer() {
ProjectTransferActivity_
.intent(this)
.mProjectObject(mProjectObject)
.start();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
mMenuSave = menu.findItem(R.id.action_finish);
updateSendButton();
super.onCreateOptionsMenu(menu, inflater);
}
private void updateSendButton() {
String text = description.getText().toString().trim();
if (text.isEmpty() || text.equals(mProjectObject.description)) {
enableSendButton(false);
} else {
enableSendButton(true);
}
}
private void enableSendButton(boolean enable) {
if (mMenuSave == null) {
return;
}
if (enable) {
mMenuSave.setIcon(R.drawable.ic_menu_ok);
mMenuSave.setEnabled(true);
} else {
mMenuSave.setIcon(R.drawable.ic_menu_ok_unable);
mMenuSave.setEnabled(false);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
boolean handled = super.onOptionsItemSelected(item);
if (handled) {
return true;
}
int itemId_ = item.getItemId();
if (itemId_ == R.id.action_finish) {
showProgressBar(true, "正在修改...");
action_done();
return true;
}
return false;
}
private void action_done() {
RequestParams params = new RequestParams();
params.put("name", mProjectObject.name);
params.put("description", description.getText().toString().trim());
params.put("id", mProjectObject.getId());
params.put("default_branch", "master");
putNetwork(host, params, host, null);
}
@Override
public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException {
showProgressBar(false);
if (tag.equals(host)) {
if (code == 0) {
umengEvent(UmengEvent.PROJECT, "修改项目");
showButtomToast("修改成功");
isBackToRefresh = true;
mProjectObject = new ProjectObject(respanse.getJSONObject("data"));
InitProUtils.hideSoftInput(getActivity());
backToRefresh();
} else {
isBackToRefresh = false;
showErrorMsg(code, respanse);
}
} else {
if (code == 0) {
umengEvent(UmengEvent.PROJECT, "修改项目图片");
showButtomToast("图片上传成功...");
mProjectObject = new ProjectObject(respanse.getJSONObject("data"));
isBackToRefresh = true;
} else {
isBackToRefresh = false;
showErrorMsg(code, respanse);
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == RESULT_REQUEST_PHOTO) {
if (resultCode == Activity.RESULT_OK) {
if (data != null) {
fileUri = data.getData();
}
fileCropUri = CameraPhotoUtil.getOutputMediaFileUri();
Global.cropImageUri(this, fileUri, fileCropUri, 600, 600, RESULT_REQUEST_PHOTO_CROP);
}
} else if (requestCode == RESULT_REQUEST_PHOTO_CROP) {
if (resultCode == Activity.RESULT_OK) {
try {
iconPath = FileUtil.getPath(getActivity(), fileCropUri);
projectIcon.setImageURI(fileCropUri);
showProgressBar(true, "正在上传图片...");
String uploadUrl = host + "/" + mProjectObject.getId() + "/project_icon";
RequestParams params = new RequestParams();
params.put("file", new File(iconPath));
postNetwork(uploadUrl, params, uploadUrl);
} catch (Exception e) {
}
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
public void backToRefresh() {
Intent intent = new Intent();
intent.putExtra("projectObject", mProjectObject);
getActivity().setResult(Activity.RESULT_OK, intent);
getActivity().finish();
}
}