/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.fragments; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; import android.widget.Toast; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.api.ApiUtils; import com.galaxy.meetup.client.android.api.OzServerException; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.service.EsService; import com.galaxy.meetup.client.android.service.EsServiceListener; import com.galaxy.meetup.client.android.service.ServiceResult; import com.galaxy.meetup.client.android.ui.activity.EditPostActivity; import com.galaxy.meetup.client.android.ui.view.MentionMultiAutoCompleteTextView; import com.galaxy.meetup.client.util.SoftInput; /** * * @author sihai * */ public class EditPostFragment extends Fragment implements OnEditorActionListener { private boolean mChanged; private Integer mEditRequestId; private MentionMultiAutoCompleteTextView mPostTextView; private EsServiceListener mServiceListener; public EditPostFragment() { mServiceListener = new EsServiceListener() { public final void onEditActivity(int i, ServiceResult serviceresult) { if(mEditRequestId != null && mEditRequestId.intValue() == i) handleEditPost(serviceresult); } }; } private void handleEditPost(ServiceResult serviceresult) { mEditRequestId = null; FragmentActivity fragmentactivity = getActivity(); if(fragmentactivity != null) { fragmentactivity.dismissDialog(0x48ba7); if(serviceresult.hasError()) { Exception exception = serviceresult.getException(); if((exception instanceof OzServerException) && ((OzServerException)exception).getErrorCode() == 14) { AlertFragmentDialog alertfragmentdialog = AlertFragmentDialog.newInstance(getString(R.string.post_not_sent_title), getString(R.string.post_restricted_mention_error), getString(R.string.ok), null); alertfragmentdialog.setTargetFragment(getTargetFragment(), 0); alertfragmentdialog.show(getFragmentManager(), "StreamPostRestrictionsNotSupported"); } else { Toast.makeText(fragmentactivity, R.string.edit_post_error, 0).show(); } } else { fragmentactivity.finish(); } } } public final void onCreate(Bundle bundle) { super.onCreate(bundle); if(bundle != null) { if(bundle.containsKey("edit_request_id")) mEditRequestId = Integer.valueOf(bundle.getInt("edit_request_id")); mChanged = bundle.getBoolean("changed", false); } } public final View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle) { View view = layoutinflater.inflate(R.layout.edit_comment_fragment, viewgroup, false); mPostTextView = (MentionMultiAutoCompleteTextView)view.findViewById(R.id.text); Intent intent = getActivity().getIntent(); EsAccount esaccount = (EsAccount)intent.getParcelableExtra("account"); String s = intent.getStringExtra("activity_id"); mPostTextView.init(this, esaccount, s, null); String s1 = intent.getStringExtra("content"); MentionMultiAutoCompleteTextView mentionmultiautocompletetextview = mPostTextView; if(s1 == null) s1 = ""; mentionmultiautocompletetextview.setHtml(s1); mPostTextView.addTextChangedListener(new TextWatcher() { public final void afterTextChanged(Editable editable) { mChanged = true; EditPostActivity editpostactivity = (EditPostActivity)EditPostFragment.this.getActivity(); } public final void beforeTextChanged(CharSequence charsequence, int i, int j, int k) { } public final void onTextChanged(CharSequence charsequence, int i, int j, int k) { } }); mPostTextView.setOnEditorActionListener(this); return view; } public final void onDiscard() { SoftInput.hide(mPostTextView); EditPostActivity editpostactivity = (EditPostActivity)getActivity(); if(mChanged) { editpostactivity.showDialog(0xdc073); } else { editpostactivity.setResult(0); editpostactivity.finish(); } } public boolean onEditorAction(TextView textview, int i, KeyEvent keyevent) { if(textview != mPostTextView) return false; if(6 == i) { SoftInput.hide(textview); return true; } else { return false; } } public final void onPause() { super.onPause(); EsService.unregisterListener(mServiceListener); } public final void onPost() { SoftInput.hide(mPostTextView); EditPostActivity editpostactivity = (EditPostActivity)getActivity(); if(!mChanged || TextUtils.isEmpty(mPostTextView.getText())) { editpostactivity.setResult(0); editpostactivity.finish(); } else { Intent intent = editpostactivity.getIntent(); EsAccount esaccount = (EsAccount)intent.getParcelableExtra("account"); String s = intent.getStringExtra("activity_id"); String s1 = ApiUtils.buildPostableString(mPostTextView.getText()); boolean flag = intent.getBooleanExtra("reshare", false); editpostactivity.showDialog(0x48ba7); mEditRequestId = Integer.valueOf(EsService.editActivity(editpostactivity, esaccount, s, s1, flag)); } } public final void onResume() { super.onResume(); EsService.registerListener(mServiceListener); if(mEditRequestId != null && !EsService.isRequestPending(mEditRequestId.intValue())) handleEditPost(EsService.removeResult(mEditRequestId.intValue())); } public final void onSaveInstanceState(Bundle bundle) { super.onSaveInstanceState(bundle); if(mEditRequestId != null) bundle.putInt("edit_request_id", mEditRequestId.intValue()); bundle.putBoolean("changed", mChanged); } }