package dump.w;

import android.annotation.SuppressLint;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.text.SpannableString;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.BmobUser;
import cn.bmob.v3.datatype.BmobPointer;
import cn.bmob.v3.listener.FindListener;
import cn.bmob.v3.listener.SaveListener;
import nico.styTool.R;

public class CommentListActivity extends Fragment
{

	ListView listView;
	static EditText et_content;
	TextView btn_publish;
	private static void startIntent(String classes)
    {
		SpannableString spannableString=new SpannableString(classes);
		int curosr=et_content.getSelectionStart();
		et_content.getText().insert(curosr, spannableString);
    }
	private void publishComment(String content)
	{
		nico.styTool.MyUser user = BmobUser.getCurrentUser(getActivity(), nico.styTool.MyUser.class);
		if (user == null)
		{
			Intent intent = new Intent(getActivity(), nico.styTool.app_th.class);
			startActivity(intent);
			//toast("发表评论前请先登陆");
			return;
		}
		else if (TextUtils.isEmpty(content))
		{
			//toast("发表评论不能为空");
			return;
		}
		final Comment_ comment = new Comment_();
		comment.setContent(content);
		comment.setPost(weibo);
		comment.setSignature(android.os.Build.MODEL + System.getProperty("line.separator"));
		comment.setUser(user);
		comment.save(getActivity(), new SaveListener() {

				@Override
				public void onSuccess()
				{
					// TODO Auto-generated method stub
					findComments();
					et_content.setText("");
					//toast("评论成功");
				}

				@Override
				public void onFailure(int code, String msg)
				{
					// TODO Auto-generated method stub
					//toast("评论失败");
				}
			});}

	private void findComments()
	{
		BmobQuery<Comment_> query = new BmobQuery<Comment_>();
		// pointer类型
		query.addWhereEqualTo("post", new BmobPointer(weibo));		
		query.include("user,post.author");
		query.findObjects(getActivity(), new FindListener<Comment_>() {

				@Override
				public void onSuccess(List<Comment_> object)
				{
					// TODO Auto-generated method stub
					comments = object;
					adapter.notifyDataSetChanged();
					et_content.setText("");
				}

				@Override
				public void onError(int code, String msg)
				{
					// TODO Auto-generated method stub
					//toast("查询失败:"+msg);
				}
			});}
	static List<Comment_> comments = new ArrayList<Comment_>();
	MyAdapter adapter;
	Post_ weibo = new Post_();
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        // TODO: Implement this method
        View view=inflater.inflate(R.layout.activity_comment_, null);

		weibo.setObjectId(nico.SPUtils.get(getActivity(), "mes", "") + "");
		adapter = new MyAdapter(getActivity());
		et_content = (EditText) view.findViewById(R.id.et_content);
		btn_publish = (TextView) view.findViewById(R.id.btn_publish);
		listView = (ListView) view.findViewById(R.id.listview);
		listView.setAdapter(adapter);

		btn_publish.setOnClickListener(new View.OnClickListener() {

				@Override
				public void onClick(View v)
				{
					// TODO Auto-generated method stub
					publishComment(et_content.getText().toString());
				}
			});
		findComments();
        return view;
	}

	private static class MyAdapter extends BaseAdapter
	{

		private LayoutInflater mInflater;
		private Context mContext;
		public MyAdapter(Context context)
		{
			mContext = context;
			mInflater = LayoutInflater.from(context);
		}

		static class ViewHolder
		{
			TextView tv_content;
			TextView tv_author;
			TextView tv_;
		}

		@Override
		public int getCount()
		{
			// TODO Auto-generated method stub
			return comments.size();
		}

		@Override
		public Object getItem(int position)
		{
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public long getItemId(int position)
		{
			// TODO Auto-generated method stub
			return position;
		}

		@SuppressLint("InflateParams")
		@Override
		public View getView(int position, View convertView, ViewGroup parent)
		{
			final ViewHolder holder;
			if (convertView == null)
			{
				convertView = mInflater.inflate(R.layout.a_bbbw, null);

				holder = new ViewHolder();
				holder.tv_content = (TextView) convertView.findViewById(R.id.tv_content);
				holder.tv_author = (TextView) convertView.findViewById(R.id.tv_author);
				holder.tv_ = (TextView) convertView.findViewById(R.id.abbbwTextView1);
				convertView.setTag(holder);
			}
			else
			{
				holder = (ViewHolder) convertView.getTag();
			}

			final Comment_ comment = comments.get(position);

			if (comment.getUser() != null)
			{
				holder.tv_author.setText("" + comment.getUser().getUsername());
				holder.tv_.setText("" + comment.getCreatedAt() + "|" + comment.getSignature());

			}

			final String str = comment.getContent();

			holder.tv_content.setText(str);
			convertView.setOnClickListener(new View.OnClickListener() {

					@Override
					public void onClick(View v)
					{
						startIntent("@" + comment.getUser().getUsername() + " ");
					}
				});

			convertView.setOnLongClickListener(new View.OnLongClickListener() {
					@Override
					//返回值代表是否已经处理结束,后面是否需要再处理
					public boolean onLongClick(View v)
					{
						final String[] os = {"复制评论"};
						AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
						AlertDialog alert = builder.setTitle("用户操作")
							.setItems(os, new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog, int which)
								{
									switch (which)
									{
										case 0:
											ClipboardManager manager = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE);
											manager.setText(comment.getContent() + "");
											break;

									}
									////showToast("你选择了" + os[which]);
								}
							}).create();
						alert.show();
						//true事件处理结束,后面不需要再处理
						return true;
					}
				});
			return convertView;
		}
	}

}