package com.suan.weclient.activity;
import android.app.Activity;
import android.app.Dialog;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.suan.weclient.R;
import com.suan.weclient.adapter.SearchListAdapter;
import com.suan.weclient.util.GlobalContext;
import com.suan.weclient.util.Util;
import com.suan.weclient.util.data.DataManager;
import com.suan.weclient.util.data.holder.resultHolder.MessageResultHolder;
import com.suan.weclient.util.net.WeChatLoader;
import com.suan.weclient.util.net.WechatManager;
import com.suan.weclient.util.net.images.ImageCacheManager;
import com.suan.weclient.view.ptr.PTRListview;
import com.umeng.analytics.MobclickAgent;
public class SearchActivity extends Activity {
private DataManager mDataManager;
private LinearLayout parentLayout;
private EditText contentEditText;
private RelativeLayout searchLayout;
private PTRListview ptrListview;
private SearchListAdapter searchListAdapter;
private SearchHandler searchHandler;
private static final int MSG_ONLY_REFRESH = 3;
private static final int MSG_REFRESH_WITH_DATA = 4;
@Override
public void onCreate(Bundle savedInstanceState) {
/* request no title mode */
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setTheme(R.style.Theme_Transparent);
setContentView(R.layout.search_layout);
initWidget();
initData();
}
private void initData() {
GlobalContext globalContext = (GlobalContext) getApplicationContext();
mDataManager = globalContext.getDataManager();
mDataManager.createSearch(mDataManager.getCurrentUser());
searchListAdapter = new SearchListAdapter(SearchActivity.this, mDataManager);
ptrListview.setAdapter(searchListAdapter);
searchHandler = new SearchHandler();
}
public class SearchHandler extends Handler {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.arg1) {
case MSG_REFRESH_WITH_DATA:
MessageResultHolder messageResultHolder = (MessageResultHolder) msg.obj;
mDataManager.getSearchMessageHolder().mergeMessageResult(messageResultHolder);
if (messageResultHolder != null) {
switch (messageResultHolder.getResultMode()) {
case MessageResultHolder.RESULT_MODE_ADD:
ptrListview.onLoadComplete();
break;
case MessageResultHolder.RESULT_MODE_REFRESH:
ptrListview.onRefreshComplete();
ptrListview.setSelection(1);
break;
}
}
break;
case MSG_ONLY_REFRESH:
mDataManager.getSearchMessageHolder().clearMessage(false);
break;
}
searchListAdapter.notifyDataSetChanged();
ptrListview.requestLayout();
}
}
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
private void initWidget() {
parentLayout = (LinearLayout) findViewById(R.id.search_layout_parent);
searchLayout = (RelativeLayout) findViewById(R.id.search_layout_search);
contentEditText = (EditText) findViewById(R.id.search_edit_content);
ptrListview = (PTRListview) findViewById(R.id.search_list);
if (contentEditText.requestFocus()) {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
contentEditText.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) {
if (s.length() == 0) {
ptrListview.setVisibility(View.INVISIBLE);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
contentEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
String content = contentEditText.getText().toString();
if (content.length() == 0) {
Toast.makeText(SearchActivity.this, "请输入内容", Toast.LENGTH_SHORT).show();
return true;
}
search(content);
return true;
}
return false;
}
});
ptrListview.setRefreshEnable(false);
ptrListview.setLoadEnable(false);
searchLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String content = contentEditText.getText().toString();
if (content.length() == 0) {
Toast.makeText(SearchActivity.this, "请输入内容", Toast.LENGTH_SHORT).show();
return;
}
search(content);
}
});
parentLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
overridePendingTransition(R.anim.search_activity_fly_in, R.anim.search_activity_fly_out);
}
});
}
private void search(String content) {
ptrListview.setVisibility(View.VISIBLE);
mDataManager.getSearchMessageHolder().clearMessage(false);
Message msg = new Message();
msg.arg1 = MSG_ONLY_REFRESH;
searchHandler.sendMessage(msg);
ptrListview.onRefreshStart();
mDataManager.getWechatManager().getSearchMessageList(content, mDataManager.getCurrentPosition(), new WechatManager.OnActionFinishListener() {
@Override
public void onFinish(int code, Object object) {
ptrListview.onRefreshComplete();
switch (code) {
case WechatManager.ACTION_SUCCESS:
Message msg = new Message();
msg.arg1 = MSG_REFRESH_WITH_DATA;
msg.obj = object;
searchHandler.sendMessage(msg);
break;
case WechatManager.ACTION_OTHER:
break;
case WechatManager.ACTION_TIME_OUT:
break;
}
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 按下键盘上返回按钮
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
overridePendingTransition(R.anim.search_activity_fly_in, R.anim.search_activity_fly_out);
return true;
} else {
return super.onKeyDown(keyCode, event);
}
}
}