/*
* Copyright (c) 2015. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
* Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
* Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
* Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
* Vestibulum commodo. Ut rhoncus gravida arcu.
*/
package com.shaweibo.biu.ui.post;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.shaweibo.biu.R;
import com.shaweibo.biu.Utils.DeviceUtil;
import com.shaweibo.biu.global.Constants;
import com.shaweibo.biu.ui.common.BaseActivity;
import com.shaweibo.biu.ui.friendship.FriendsAtActivity;
import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnClick;
public abstract class AbPostActivity extends BaseActivity implements EmoticonFragment.OnEmoticonOnClinckListener {
public static final int AT_FRIEND = 1;
@InjectView(R.id.toolbar)
Toolbar toolbar;
@InjectView(R.id.tv_text_left)
TextView tv_text_left;
@InjectView(R.id.ck_extra)
CheckBox ck_extra;
@InjectView(R.id.rl_status_info)
RelativeLayout rl_stauts_info;
@InjectView(R.id.iv_source)
public ImageView iv_source;
@InjectView(R.id.tv_status_content)
public TextView tv_status_content;
@InjectView(R.id.edit)
EditText editText;
@OnClick(R.id.edit)
public void editClick() {
if (fl_bottom.getVisibility() == View.VISIBLE) {
hideBottom();
}
}
@InjectView(R.id.iv_img_to_send)
ImageView iv_image_to_send;
@InjectView(R.id.btn_inser_img)
ImageButton btn_inser_img;
@InjectView(R.id.fl_bottom)
FrameLayout fl_bottom;
@OnClick(R.id.btn_at_friend)
public void atFriends() {
Intent intent = new Intent(AbPostActivity.this, FriendsAtActivity.class);
this.startActivityForResult(intent, AT_FRIEND);
}
@OnClick(R.id.btn_send)
public void sumbit() {
int left=Constants.MAX_WEIBO_LENGTH- editText.getText().toString().length();
if(left<0){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.weibo_length_error);
builder.setPositiveButton(R.string.btn_commfire, new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
else{
new Uploader().execute();
}
}
@OnClick(R.id.btn_inser_emoji)
public void showEmoji() {
if (fl_bottom.getVisibility() == View.GONE) {
DeviceUtil.closeSoftInput(this, editText);
fl_bottom.setVisibility(View.VISIBLE);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
} else {
hideBottom();
DeviceUtil.showSoftInput(this, editText);
}
}
private EmoticonFragment mEmoticonFragment;
private final String TAG_EMOTICON = "tag_emotiocn";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_post);
ButterKnife.inject(this);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mEmoticonFragment = (EmoticonFragment) getFragmentManager().findFragmentByTag(TAG_EMOTICON);
if (mEmoticonFragment == null) {
mEmoticonFragment = new EmoticonFragment();
}
getFragmentManager().beginTransaction().replace(R.id.fl_bottom, mEmoticonFragment, TAG_EMOTICON).commit();
tv_text_left.setText(String.valueOf(Constants.MAX_WEIBO_LENGTH));
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
int left=Constants.MAX_WEIBO_LENGTH- s.toString().length();
tv_text_left.setText(String.valueOf(left));
}
});
}
protected void setActionbarTitle(int ResId) {
getSupportActionBar().setTitle(ResId);
}
private void hideBottom() {
fl_bottom.setVisibility(View.GONE);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
return true;
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
if (fl_bottom.getVisibility()==View.VISIBLE) {
hideBottom();
} else if (!TextUtils.isEmpty(editText.getText().toString()) ) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.exit_comfire);
// builder.setTitle("提示");
builder.setPositiveButton(R.string.btn_commfire, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
AbPostActivity.this.finish();
}
});
builder.setNegativeButton(R.string.btn_cancle, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
} else {
super.onBackPressed();
}
}
protected abstract boolean post();
protected abstract void onPrePost();
protected abstract void onPostResult(boolean result);
private class Uploader extends AsyncTask<Void, Void, Boolean> {
@Override
protected void onPreExecute() {
super.onPreExecute();
onPrePost();
}
@Override
protected Boolean doInBackground(Void... params) {
return post();
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
onPostResult(result);
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case AT_FRIEND:
String name = intent.getStringExtra("name");
String ori = editText.getText().toString();
int index = editText.getSelectionStart();
StringBuilder stringBuilder = new StringBuilder(ori);
stringBuilder.insert(index, name);
editText.setText(stringBuilder.toString());
editText.setSelection(index + name.length());
break;
}
}
}
@Override
public void onEmoticonClick(SpannableString emojiSpane) {
int maxLength = Constants.MAX_WEIBO_LENGTH;
if (editText.getText().toString().length() + emojiSpane.length() <= maxLength) {
Spannable contentSpann = editText.getText();
int select = editText.getSelectionStart();
SpannableStringBuilder strBuilder = new SpannableStringBuilder();
strBuilder.append(contentSpann.subSequence(0, select));
strBuilder.append(emojiSpane);
strBuilder.append(contentSpann.subSequence(select, contentSpann.length()));
editText.setText(strBuilder);
int length = select + emojiSpane.length();
if (length > editText.length()) {
length = editText.length();
}
editText.setSelection(length);
} else {
String msg = String.format(getString(R.string.weibo_length_error),
maxLength);
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
}
}