package com.kaixin.android.activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.kaixin.android.KXActivity; import com.kaixin.android.R; import com.kaixin.android.result.Diary; import com.kaixin.android.utils.CallService; import com.kaixin.android.utils.MessageUtil; import com.kaixin.android.utils.TextUtil; import com.kaixin.android.utils.Utils; /** * 写日记类 * * @author gyz * */ public class WriteDiaryActivity extends KXActivity { private LinearLayout mParent; private Button mCancel; private Button mSubmit; private EditText mTitle; private EditText mContent; private Button mFace; private Button mPhoto; private Button mLocation; private TextView mCompetence; private String[] mCompetenceItems = new String[] { "任何人可见", "仅关注人可见", "仅自己可见" };// 权限名称 private int mCompetencePosition = 1;// 当前选择的权限在列表中的位置 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.writediary_activity); findViewById(); setListener(); init(); } private void findViewById() { mParent = (LinearLayout) findViewById(R.id.writediary_parent); mCancel = (Button) findViewById(R.id.writediary_cannel); mSubmit = (Button) findViewById(R.id.writediary_submit); mTitle = (EditText) findViewById(R.id.writediary_title); mContent = (EditText) findViewById(R.id.writediary_content); mFace = (Button) findViewById(R.id.writediary_face); mPhoto = (Button) findViewById(R.id.writediary_photo); mLocation = (Button) findViewById(R.id.writediary_location); mCompetence = (TextView) findViewById(R.id.writerecord_competence); } private void setListener() { mCancel.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 显示退出对话框 showExitDialog(); } }); mSubmit.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 获取当前标题和内容数据 String title = mTitle.getText().toString().trim(); String content = mContent.getText().toString().trim(); // 标题和内容为空时提示消息,否则则关闭当前界面并返回数据 if (TextUtils.isEmpty(title)) { showErrorDialog("日记标题不能为空"); } else if (TextUtils.isEmpty(content)) { showErrorDialog("日记内容不能为空"); } else { Diary result = new Diary(); result.setTitle(title); result.setContent(content); CallService.writeDiary(title, content, mCompetencePosition); result.setTime(Utils.formatDate(WriteDiaryActivity.this, System.currentTimeMillis())); mKXApplication.mMyDiaryResults.add(0, result); mKXApplication.mDraft_DiaryTitle = null; mKXApplication.mDraft_DiaryContent = null; setResult(RESULT_OK); MessageUtil.showImgMsg(mKXApplication, "发布成功,+10"); finish(); } } }); mTitle.setOnFocusChangeListener(new OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { // 当标题获取到焦点时,表情不可用 if (hasFocus) { mFace.setBackgroundResource(R.drawable.write_function_face_disable); mFace.setEnabled(false); } else { mFace.setBackgroundResource(R.drawable.write_function_face_button); mFace.setEnabled(true); } } }); mFace.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 显示表情对话框 showFace(mParent); } }); mPhoto.setOnClickListener(new OnClickListener() { public void onClick(View v) { } }); mLocation.setOnClickListener(new OnClickListener() { public void onClick(View v) { } }); mFaceGridView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 获取当前光标所在位置 int currentPosition = mContent.getSelectionStart(); // 添加含有表情的文本 mContent.setText(new TextUtil(mKXApplication).replace(mContent .getText().insert(currentPosition, mKXApplication.mFacesText.get(position)))); // 关闭表情对话框 dismissFace(); } }); mFaceClose.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 关闭表情对话框 dismissFace(); } }); mCompetence.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 权限对话框 CompetenceDialog(); } }); } private void init() { // 查看当前草稿箱是否有数据,有的话则显示 if (!(mKXApplication.mDraft_DiaryTitle == null)) { mTitle.setText(mKXApplication.mDraft_DiaryTitle); } if (!(mKXApplication.mDraft_DiaryContent == null)) { mContent.setText(mKXApplication.mDraft_DiaryContent); } mCompetence.setText(mCompetenceItems[mCompetencePosition]); } /** * 提示对话框 * * @param message */ private void showErrorDialog(String message) { new AlertDialog.Builder(WriteDiaryActivity.this).setTitle("OOXX") .setIcon(android.R.drawable.ic_dialog_alert) .setMessage(message) .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create().show(); } /** * 退出对话框 */ private void showExitDialog() { final String title = mTitle.getText().toString().trim(); final String content = mContent.getText().toString().trim(); if ((!TextUtils.isEmpty(title)) || (!TextUtils.isEmpty(content))) { new AlertDialog.Builder(WriteDiaryActivity.this) .setTitle("退出正在编辑的日记") .setItems(new String[] { "保存为日记草稿", "不保存" }, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: mKXApplication.mDraft_DiaryTitle = title; mKXApplication.mDraft_DiaryContent = content; break; case 1: mKXApplication.mDraft_DiaryTitle = null; mKXApplication.mDraft_DiaryContent = null; break; } setResult(RESULT_CANCELED); finish(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }).create().show(); } else { mKXApplication.mDraft_DiaryTitle = null; mKXApplication.mDraft_DiaryContent = null; setResult(RESULT_CANCELED); finish(); } } /** * 权限对话框 */ private void CompetenceDialog() { AlertDialog.Builder builder = new Builder(WriteDiaryActivity.this); builder.setTitle("请选择记录权限"); builder.setAdapter(new CompetenceAdapter(), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { mCompetencePosition = which; mCompetence.setText(mCompetenceItems[which]); dialog.dismiss(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }).create().show(); } private class CompetenceAdapter extends BaseAdapter { public int getCount() { return mCompetenceItems.length; } public Object getItem(int position) { return mCompetenceItems[position]; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = LayoutInflater.from(WriteDiaryActivity.this) .inflate(R.layout.writerecord_activity_competence_item, null); holder = new ViewHolder(); holder.icon = (ImageView) convertView .findViewById(R.id.writerecord_activity_competence_item_icon); holder.name = (TextView) convertView .findViewById(R.id.writerecord_activity_competence_item_name); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } if (mCompetencePosition == position) { holder.icon.setVisibility(View.VISIBLE); } else { holder.icon.setVisibility(View.INVISIBLE); } holder.name.setText(mCompetenceItems[position]); return convertView; } class ViewHolder { ImageView icon; TextView name; } } public void onBackPressed() { // 显示退出对话框 showExitDialog(); } }