package com.piglet.ui; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.piglet.R; import com.piglet.adapter.ConnInfoAdapter; import com.piglet.dao.impl.ConnectionInfoDao; import com.piglet.dao.pojo.ConnectionInfo; import com.piglet.utils.Constant; import com.piglet.widget.QuickAction; import com.umeng.analytics.MobclickAgent; import com.umeng.fb.FeedbackAgent; import com.umeng.update.UmengUpdateAgent; public class MainActivity extends Activity { public static final int REQUEST_CODE_ADD_CONN = 0; public static final int REQUEST_CODE_EDIT_CONN = 1; private ListView listView; private ConnInfoAdapter adapter; private Button addBtn; private ImageView purpleImg; private ImageView main_menu; private ConnectionInfoDao connDao; private FeedbackAgent agent; /** * Called when the activity is first created. * * @param savedInstanceState * If the activity is being re-initialized after previously being * shut down then this Bundle contains the data it most recently * supplied in onSaveInstanceState(Bundle). <b>Note: Otherwise it * is null.</b> */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); connDao = new ConnectionInfoDao(); // umeng feedback agent = new FeedbackAgent(MainActivity.this); agent.sync(); // ument auto update UmengUpdateAgent.update(this); UmengUpdateAgent.setUpdateOnlyWifi(false); initView(); initMenu(); initData(); } private void initMenu() { registerForContextMenu(listView); } @Override public void onContextMenuClosed(Menu menu) { super.onContextMenuClosed(menu); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.connlist, menu); super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); switch (item.getItemId()) { case R.id.edit: Intent it = new Intent(); it.setClass(getApplicationContext(), EditConnectionActivity.class); it.putExtra(Constant.key.CONNECTION_INFO_NAME, adapter.getItemObject(info.position).getName()); startActivityForResult(it, REQUEST_CODE_EDIT_CONN); break; case R.id.del: connDao.delete(adapter.getItemObject(info.position)); initData(); break; case R.id.normalmode: Intent it1 = new Intent(); it1.setClass(getApplicationContext(), DbActivity.class); it1.putExtra(Constant.key.CONNECTION_INFO, adapter.getItemObject(info.position)); startActivity(it1); break; case R.id.cmdmode: Intent it2 = new Intent(); it2.setClass(getApplicationContext(), CmdActivity.class); it2.putExtra(Constant.key.CONNECTION_INFO, adapter.getItemObject(info.position)); startActivity(it2); break; } return true; } public void onResume() { super.onResume(); MobclickAgent.onResume(this); } public void onPause() { super.onPause(); MobclickAgent.onPause(this); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == AddConnectionActivity.RESULT_CODE_CONN) { initData(); } super.onActivityResult(requestCode, resultCode, data); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(com.piglet.R.menu.main, menu); return true; } private void initView() { main_menu = (ImageView) findViewById(R.id.main_menu); main_menu.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //agent.startFeedbackActivity(); showMenu(); } }); purpleImg = (ImageView) findViewById(R.id.purplecow); purpleImg.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent it = new Intent(Intent.ACTION_VIEW, Uri.parse("http://purplecow.me")); startActivity(it); } }); addBtn = (Button) findViewById(R.id.add_btn); addBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent it = new Intent(); it.setClass(getApplicationContext(), AddConnectionActivity.class); startActivityForResult(it, REQUEST_CODE_ADD_CONN); } }); listView = (ListView) findViewById(R.id.connlist); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { view.showContextMenu(); } }); adapter = new ConnInfoAdapter(this); listView.setAdapter(adapter); } private void initData() { adapter.clear(); List<ConnectionInfo> list = connDao.findAll(); adapter.addAll(list); } private QuickAction menuWin; private ArrayList<String> menuTexts; private void showMenu() { if (menuTexts == null) { // load the hint here. menuTexts = new ArrayList<String>(); menuTexts.addAll(Arrays.asList(getResources().getStringArray(R.array.main_menu))); } if (menuWin != null) { if (menuWin.isShowing()) return; } else { LayoutInflater inflater = LayoutInflater.from(this); menuWin = new QuickAction(main_menu); menuWin.setTitle(R.string.main_menu); int i = 0; for (String menuText : menuTexts) { View view = inflater.inflate(R.layout.popup_item, null); final TextView textView = (TextView) view.findViewById(R.id.item); textView.setText(menuText); view.setTag(i++); view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { menuWin.dismiss(); int index =(Integer) v.getTag(); onMenuClicked(index); } }); menuWin.addItem(view); } } menuWin.show(); } private void onMenuClicked(int index){ switch(index){ case 0:// fb agent.startFeedbackActivity(); break; case 1://about Intent it = new Intent(); it.setClass(MainActivity.this, AboutActivity.class); startActivity(it); break; } } }