package com.joyplus.joylink; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import android.app.ActionBar; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; import com.androidquery.AQuery; import com.umeng.analytics.MobclickAgent; public class Explorer extends BaseActivity implements View.OnClickListener { public Explorer() { super("浏览器"); // TODO Auto-generated constructor stub } private String TAG = "Explorer"; private App app; private AQuery aq; private ArrayList<ExplorerAppData> mData; private ArrayList<ExplorerHistroryData> mDataHistory; private ListView ItemsListView; private ListView ItemsListViewHistrory; private MyListAdapter mAdapter; private MyListHistroryAdapter mAdapterHistrory; private ImageButton mSlidingMenuButton; private ImageButton mSlidingMenuButtonL; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.explorer); app = (App) getApplication(); aq = new AQuery(this); getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); getActionBar().setCustomView(R.layout.actionbar_layout_list); TextView mTextView = (TextView) getActionBar().getCustomView() .findViewById(R.id.actionBarTitle); mTextView.setText("浏览器"); mSlidingMenuButtonL = (ImageButton) getActionBar().getCustomView() .findViewById(R.id.slidingMenuButtonL); mSlidingMenuButtonL.setOnClickListener(this); mSlidingMenuButton = (ImageButton) getActionBar().getCustomView() .findViewById(R.id.slidingMenuButton1); mSlidingMenuButton.setOnClickListener(this); aq.id(R.id.relativeLayoutList).gone(); ItemsListView = (ListView) findViewById(R.id.listView1); ItemsListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ExplorerAppData mExplorerAppData = mData.get(position); sendURL(mExplorerAppData.str1); } }); ItemsListViewHistrory = (ListView) findViewById(R.id.listView2); ItemsListViewHistrory.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ExplorerHistroryData m_date = mDataHistory.get(position); sendURL(m_date.url); } }); mData = new ArrayList<ExplorerAppData>(); mAdapter = new MyListAdapter(this, mData, R.layout.explorer_list); ItemsListView.setAdapter(mAdapter); setListViewHeightBasedOnChildren(ItemsListView); mDataHistory = new ArrayList<ExplorerHistroryData>(); mAdapterHistrory = new MyListHistroryAdapter(this, mDataHistory, R.layout.explorer_history_list); ItemsListViewHistrory.setAdapter(mAdapterHistrory); setListViewHeightBasedOnChildren(ItemsListViewHistrory); GetData(); GetHistoryData(); Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { EditText mEditText = (EditText) findViewById(R.id.input_message_edit_text); mEditText.setCursorVisible(true); // aq.id(R.id.input_message_edit_text).getEditText().setCursorVisible(true); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); } }, 500); } @Override public void onClick(View view) { if (view == mSlidingMenuButton) { getSlidingMenu().toggle(); } else if (view == mSlidingMenuButtonL) finish(); } public void OnClickSlidingMenu(View v) { getSlidingMenu().toggle(); } public void OnClickHome(View v) { super.OnClickHome(this); } public void OnClickRemoteMouse(View v) { super.OnClickRemoteMouse(this); } public void OnClickRemoteControl(View v) { super.OnClickRemoteControl(this); } public void OnClickSetting(View v) { super.OnClickSetting(this); } private void GetHistoryData() { String mSaveData = app.GetServiceData("Explorer"); if (mSaveData != null) { String[] m_str = mSaveData.split("\\|"); for (int i = m_str.length / 2; i > 0; i--) { ExplorerHistroryData m_date = new ExplorerHistroryData(); m_date.time = m_str[i * 2 - 2]; m_date.url = URLDecoder.decode(m_str[i * 2 - 1]); mDataHistory.add(m_date); } if (mDataHistory.size() > 0) aq.id(R.id.relativeLayoutList2).visible(); else aq.id(R.id.relativeLayoutList2).gone(); } else aq.id(R.id.relativeLayoutList2).gone(); } private void GetData() { // for (int i = 0; i < 3; i++) { ExplorerAppData mExplorerAppData = new ExplorerAppData(); mExplorerAppData.name = "joyplus官网"; mExplorerAppData.str1 = "www.joyplus.tv"; mData.add(mExplorerAppData); // } mExplorerAppData = new ExplorerAppData(); mExplorerAppData.name = "百度"; mExplorerAppData.str1 = "www.baidu.com"; mData.add(mExplorerAppData); mExplorerAppData = new ExplorerAppData(); mExplorerAppData.name = "hao123"; mExplorerAppData.str1 = "www.hao123.com"; mData.add(mExplorerAppData); mExplorerAppData = new ExplorerAppData(); mExplorerAppData.name = "58同城"; mExplorerAppData.str1 = "www.58.com"; mData.add(mExplorerAppData); mExplorerAppData = new ExplorerAppData(); mExplorerAppData.name = "优酷"; mExplorerAppData.str1 = "www.youku.com"; mData.add(mExplorerAppData); mExplorerAppData = new ExplorerAppData(); mExplorerAppData.name = "音悦台"; mExplorerAppData.str1 = "www.yinyuetai.com"; mData.add(mExplorerAppData); mExplorerAppData = new ExplorerAppData(); mExplorerAppData.name = "淘宝网"; mExplorerAppData.str1 = "www.taobao.com"; mData.add(mExplorerAppData); mExplorerAppData = new ExplorerAppData(); mExplorerAppData.name = "奇艺网"; mExplorerAppData.str1 = "www.qiyi.com"; mData.add(mExplorerAppData); mExplorerAppData = new ExplorerAppData(); mExplorerAppData.name = "糗事百科"; mExplorerAppData.str1 = "www.qiushibaike.com"; mData.add(mExplorerAppData); mExplorerAppData = new ExplorerAppData(); mExplorerAppData.name = "星座网"; mExplorerAppData.str1 = "www.xingzuowu.com"; mData.add(mExplorerAppData); mExplorerAppData = new ExplorerAppData(); mExplorerAppData.name = "太平洋女性网"; mExplorerAppData.str1 = "www.pclady.com.cn"; mData.add(mExplorerAppData); mAdapter.notifyDataSetChanged(); } public void OnClickTopLeft(View v) { } public void OnClickTopRight(View v) { InputMethodManager imm = (InputMethodManager) this .getSystemService(Context.INPUT_METHOD_SERVICE); aq.id(R.id.input_message_edit_text).getEditText() .setCursorVisible(false);// 失去光标 imm.hideSoftInputFromWindow(v.getWindowToken(), 0); checkListVisibility(); } private void checkListVisibility() { if (aq.id(R.id.relativeLayoutList).getView().getVisibility() == View.VISIBLE) { // Its visible if (mDataHistory.size() > 0) aq.id(R.id.relativeLayoutList2).visible(); aq.id(R.id.relativeLayoutList).gone(); } else { aq.id(R.id.relativeLayoutList).visible(); aq.id(R.id.relativeLayoutList2).gone(); // Either gone or invisible } } public void OnClickBSSend(View v) { String url = aq.id(R.id.input_message_edit_text).getText().toString() .trim(); if (url.length() > 0) { // {explorer:[{ time: [STRING], url: [STRING]}] } try { String mSaveData = app.GetServiceData("Explorer"); String findString = "|" + URLEncoder.encode(url, "UTF-8") + "|"; if (mSaveData == null || mSaveData.indexOf(findString) == -1) { ExplorerHistroryData m_date = new ExplorerHistroryData(); m_date.time = new SimpleDateFormat("MM-dd HH:mm") .format(new Date()); m_date.url = url; mDataHistory.add(0, m_date); mAdapterHistrory.notifyDataSetChanged(); ItemsListViewHistrory.invalidate(); aq.id(R.id.relativeLayoutList2).visible(); mSaveData = mSaveData + m_date.time + "|" + URLEncoder.encode(url, "UTF-8") + "|"; app.SaveServiceData("Explorer", mSaveData); } sendURL(url); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public void OnClickDelHistoryAll(View v) { mDataHistory.clear(); mAdapterHistrory.notifyDataSetChanged(); ItemsListViewHistrory.invalidate(); app.DeleteServiceData("Explorer"); aq.id(R.id.relativeLayoutList2).gone(); } public void sendURL(String url) { super.sendURL(url); GotoControlMouse(); } private void GotoControlMouse() { Intent intent = new Intent(this, ControlMouse.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); try { startActivity(intent); } catch (ActivityNotFoundException ex) { Log.e("Main", "Call MouseMode failed", ex); } } @Override protected void onDestroy() { if (aq != null) aq.dismiss(); super.onDestroy(); } @Override public void onResume() { super.onResume(); MobclickAgent.onResume(this); } @Override public void onPause() { super.onPause(); MobclickAgent.onPause(this); } @Override protected void onStart() { super.onStart(); } private class MyListAdapter extends BaseAdapter { private Context mcontext; private LayoutInflater mlayoutInflater; private ArrayList<ExplorerAppData> mlistData = null; private int resourelayoutid; public MyListAdapter(Context context, ArrayList<ExplorerAppData> listData, int layout_item) { mcontext = context; mlayoutInflater = LayoutInflater.from(mcontext); mlistData = listData; resourelayoutid = layout_item; } @Override public int getCount() { // TODO Auto-generated method stub return mlistData.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh = null; if (convertView == null) { vh = new ViewHolder(); convertView = mlayoutInflater.inflate(resourelayoutid, null); vh.textView1 = (TextView) convertView .findViewById(R.id.textView1); vh.textView2 = (TextView) convertView .findViewById(R.id.textView2); convertView.setTag(vh); } else { vh = (ViewHolder) convertView.getTag(); } vh.textView1.setText(mlistData.get(position).name); vh.textView2.setText(mlistData.get(position).str1); return convertView; } } public class ViewHolder { public TextView textView1; public TextView textView2; } public class ExplorerAppData { public String name; public String str1; } public class ExplorerHistroryData { public String url; public String time; } private class MyListHistroryAdapter extends BaseAdapter { private Context mcontext; private LayoutInflater mlayoutInflater; private ArrayList<ExplorerHistroryData> mlistData = null; private int resourelayoutid; public MyListHistroryAdapter(Context context, ArrayList<ExplorerHistroryData> listData, int layout_item) { mcontext = context; mlayoutInflater = LayoutInflater.from(mcontext); mlistData = listData; resourelayoutid = layout_item; } @Override public int getCount() { // TODO Auto-generated method stub return mlistData.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh = null; if (convertView == null) { vh = new ViewHolder(); convertView = mlayoutInflater.inflate(resourelayoutid, null); vh.textView1 = (TextView) convertView .findViewById(R.id.textView1); vh.textView2 = (TextView) convertView .findViewById(R.id.textViewTime); convertView.setTag(vh); } else { vh = (ViewHolder) convertView.getTag(); } vh.textView1.setText(mlistData.get(position).url); vh.textView2.setText(mlistData.get(position).time); return convertView; } } public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); } @Override void ConnectOK(String name) { // TODO Auto-generated method stub } @Override void ConnectFailed() { // TODO Auto-generated method stub } }