6

package com.example.sharingcontact;


import java.util.ArrayList;

import com.example.sharingcontact.AddActivity.ImageAdapter;
import com.example.sharingcontact.UpdateActivity.contact;
import com.example.sharingcontact.db.ContactInfo;
import com.example.sharingcontact.db.Contacts;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ViewSwitcher.ViewFactory;

import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ImageView.ScaleType;
import android.widget.ViewSwitcher.ViewFactory;

public class ModifyActivity extends Activity implements ViewFactory{

	EditText et_name;
	EditText et_telePhone;
	EditText et_phone;
	EditText et_nickname;
	EditText et_company;
	EditText et_address;
    int id;
	Button btn_save;
	Button btn_return;
	Button btn_delete;
	
	TextView tv_title;
	Button btn_message;
	Button btn_dial;
	

	ContactInfo user;

	//头像的按钮
	ImageButton imageButton;
	//用flag来判断按钮的状态   false表示查看点击修改状态  true表示点击修改保存状态
	boolean flag = false;
	boolean imageChanged = false;
	boolean isDataChanged = false;
	
	int currentImagePosition;
	int previousImagePosition;
	
	String[] callData;
	//表示状态:打电话,发短信,发邮件
	String status;
	//拥有一个user实例,这个对象由Intent传过来

	Gallery gallery;
	ImageSwitcher is;
	
	View numChooseView;
	View imageChooseView;
	
	//号码选择的对话框
	AlertDialog numChooseDialog;
	AlertDialog imageChooseDialog =null;
	
	
	
	/**
	 * 所有的图像图片
	 */
	private  int[] images 
			= new int[]{R.drawable.icon
		,R.drawable.image1,R.drawable.image2,R.drawable.image3
		,R.drawable.image4,R.drawable.image5,R.drawable.image6
		,R.drawable.image7,R.drawable.image8,R.drawable.image9
		,R.drawable.image10,R.drawable.image11,R.drawable.image12
		,R.drawable.image13,R.drawable.image14,R.drawable.image15
		,R.drawable.image16,R.drawable.image17,R.drawable.image18
		,R.drawable.image19,R.drawable.image20,R.drawable.image21
		,R.drawable.image22,R.drawable.image23,R.drawable.image24
		,R.drawable.image25,R.drawable.image26,R.drawable.image27
		,R.drawable.image28,R.drawable.image29,R.drawable.image30};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//在标题上添加按钮
		requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);  
		setContentView(R.layout.modify);
		getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titleitem); 
		//默认不弹出软键盘
		 getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
		
	     final TextView tv_title = (TextView) findViewById(R.id.tv_title);
	     tv_title.setText("联系人列表");
				
		//获得意图
		Intent intent = getIntent();
		//从意图中得到需要的user对象
		user = (ContactInfo) intent.getSerializableExtra("user");
		loadUserData();
		setEditTextDisable();

		
		//为按钮添加监听类
		
		btn_delete.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				deleteat();
			}
		});
		
		btn_save.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View arg0) {
				if(!flag) {
					btn_save.setText("保存");
					setEditTextAble();
					setColorToBlack();
					flag = true;
					tv_title.setText("修改联系人");
					
				} else {
					//往数据库里面更新数据
					modify();
					finish();
					
					
					setEditTextDisable();
					setColorToGray();
					btn_save.setText("修改");
					tv_title.setText("联系人详情");
					flag = false;
				}
				
			}});
		btn_return.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				finish();
			}
		});
		
		//返回键
		
		
		
		imageButton.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				
				loadImage();//为gallery装载图片
				initImageChooseDialog();//初始化imageChooseDialog
				imageChooseDialog.show();
			}
		});
		
		
		btn_message.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				status = Intent.ACTION_SENDTO;
				if(callData == null) {
					loadAvailableCallData();
				}
				if(callData.length == 0) {
					//提示没有可用的号码
					Toast.makeText(ModifyActivity.this, "没有可用的号码!", Toast.LENGTH_LONG).show();
				} else if(callData.length == 1) {
					//如果之后又一个可用的号码,这直接使用这个号码拨出
					Intent intent = 
						new Intent(Intent.ACTION_SENDTO,Uri.parse("smsto://" + callData[0]));
					startActivity(intent);
				} else {
					initNumChooseDialog();
				}
			}
		});
		
		btn_dial.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				//将状态设置为打电话
				status = Intent.ACTION_CALL;
				if(callData == null) {
					//加载可用的号码
					loadAvailableCallData();
				}
				
				if(callData.length == 0) {
					//提示没有可用的号码
					Toast.makeText(ModifyActivity.this, "没有可用的号码!", Toast.LENGTH_LONG).show();
					
				} else if(callData.length == 1) {
					//如果之有一个可用的号码,这直接使用这个号码拨出
					Intent intent = 
						new Intent(Intent.ACTION_CALL,Uri.parse("tel://" + callData[0]));
					startActivity(intent);
				} else {
					//如果有2个或者2个以上号码,弹出号码选择对话框
					initNumChooseDialog();
				}
				
			}
		});
	}
	
	//短信或者电话功能
	public void loadAvailableCallData() {
		ArrayList<String> callNums = new ArrayList<String>();
		if(!user.MobileTel.equals("")) {
			callNums.add(user.MobileTel);
		}
		if(!user.FixedTel.equals("")) {
			callNums.add(user.FixedTel);
		}
		callData = new String[callNums.size()];
		
		for(int i=0;i<callNums.size();i++) {
			callData[i] = callNums.get(i);
		}
	}
	
	public void initNumChooseDialog() {
		if(numChooseDialog == null) {
			AlertDialog.Builder builder = new AlertDialog.Builder(this);
			LayoutInflater inflater = LayoutInflater.from(this);
			numChooseView = inflater.inflate(R.layout.numchoose, null);
			ListView lv = (ListView)numChooseView.findViewById(R.id.num_list);
		    ArrayAdapter array = 
		        	new ArrayAdapter(this,android.R.layout.simple_list_item_1,callData);
		    lv.setAdapter(array);
		    lv.setOnItemClickListener(new OnItemClickListener(){
				@Override
				public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
						long arg3) {
					String num = String.valueOf(arg0.getItemAtPosition(arg2));
					Intent intent = null;
					if(status.equals(Intent.ACTION_CALL)) {
						intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel://" + num));
					} else {
						intent = new Intent(Intent.ACTION_SENDTO,Uri.parse("smsto://" + num));
					}
					
					startActivity(intent);
					//对话框消失
					numChooseDialog.dismiss();
				}});
		    
		    
			builder.setView(numChooseView);
			numChooseDialog = builder.create();
			
		}
		numChooseDialog.show();
	}
	
	 public boolean onKeyDown(int keyCode, KeyEvent event){

			if (keyCode == KeyEvent.KEYCODE_BACK) { 
				if(flag) {
					Dialog dialog = new AlertDialog.Builder(ModifyActivity.this) // 实例化对象
					//.setIcon(R.drawable.pic_m) 						// 设置显示图片
					.setMessage("是否保存联系人?") 				// 设置显示内容
					.setPositiveButton("确定", 						// 增加一个确定按钮
							new DialogInterface.OnClickListener() {	// 设置操作监听
								public void onClick(DialogInterface dialog,
										int whichButton) { 			// 单击事件
									modify();
									flag=false;
									finish();
								}
							}).setNegativeButton("取消", 			// 增加取消按钮
							new DialogInterface.OnClickListener() {	// 设置操作监听
								public void onClick(DialogInterface dialog,
										int whichButton) { 			// 单击事件
									finish();
								}
							}).create(); 							// 创建Dialog
					dialog.show(); 		
											// 显示对话框				
			}
	    }
			return super.onKeyDown(keyCode, event);	
	 }
	
	public void loadImage() {
		if(imageChooseView == null) {
			LayoutInflater li = LayoutInflater.from(ModifyActivity.this);
			imageChooseView = li.inflate(R.layout.imageswitch, null);
			gallery = (Gallery)imageChooseView.findViewById(R.id.img_gallery);
		//	gallery.setAdapter(adapter);
			
			gallery.setAdapter(new ImageAdapter(ModifyActivity.this));
			gallery.setSelection(images.length/2);
			is = (ImageSwitcher)imageChooseView.findViewById(R.id.image_switcher);
			is.setFactory(this);
			gallery.setOnItemSelectedListener(new OnItemSelectedListener(){

				@Override
				public void onItemSelected(AdapterView<?> arg0, View arg1,
						int arg2, long arg3) {
					// TODO Auto-generated method stub
					currentImagePosition = arg2 % images.length;
					is.setImageResource(images[arg2 % images.length]);
					
				}

				@Override
				public void onNothingSelected(AdapterView<?> arg0) {
					
				}});
		}
		
	}
	
	/**
	 * 自定义Gallery的适配器
	 */
	class ImageAdapter extends BaseAdapter {

		private Context context;
		
		public ImageAdapter(Context context) {
			this.context = context;
		}
		
		@Override
		public int getCount() {
			return Integer.MAX_VALUE;
		}

		@Override
		public Object getItem(int position) {
			return position;
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		
		/**
		 * gallery从这个方法中拿到image
		 */
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ImageView iv = new ImageView(context);
			iv.setImageResource(images[position%images.length]);
			iv.setAdjustViewBounds(true);
			iv.setLayoutParams(new Gallery.LayoutParams(80,80));
			iv.setPadding(15, 10, 15, 10);
			return iv;
			
		}
		
	}
	
	@Override
	public View makeView() {
		ImageView view = new ImageView(this);
		view.setBackgroundColor(0xff000000);
		view.setScaleType(ScaleType.FIT_CENTER);
		view.setLayoutParams(new ImageSwitcher.LayoutParams(90,90));
		return view;
	}
	
	public void initImageChooseDialog() {
		if(imageChooseDialog == null) {
			AlertDialog.Builder builder = new AlertDialog.Builder(this);
			builder.setTitle("请选择图像")
			.setView(imageChooseView).setPositiveButton("确定", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					imageChanged = true;
					previousImagePosition = currentImagePosition;
					imageButton.setImageResource(images[currentImagePosition%images.length]);
				}
			})
			.setNegativeButton("取消", new DialogInterface.OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					currentImagePosition = previousImagePosition;
					
				}
			});
			imageChooseDialog = builder.create();
		}
	}

	/**
	 * 获得布局文件中的控件,并且根据传递过来user对象对控件进行赋值
	 */
	public void loadUserData() {
		// 获得EditText控件
		et_name = (EditText)findViewById(R.id.name);
		et_nickname = (EditText) findViewById(R.id.nickname);
		et_phone = (EditText)findViewById(R.id.phone);
		et_telePhone = (EditText)findViewById(R.id.telephone);
		et_company = (EditText)findViewById(R.id.company);
		et_address = (EditText)findViewById(R.id.address);
		// 获得Button控件
		btn_delete =  (Button) findViewById(R.id.delete);
		btn_save = (Button) findViewById(R.id.btn_titlesave);
		btn_return = (Button)findViewById(R.id.btn_titlecancle);
		tv_title = (TextView) findViewById(R.id.tv_title);
		imageButton = (ImageButton)findViewById(R.id.image_button); 
		
		btn_message = (Button) findViewById(R.id.message);
		btn_dial = (Button) findViewById(R.id.dial);

      //  editText.setFocusableInTouchMode(true); 
      //  editText.requestFocus(); 
		// 为控件赋值
		btn_save.setText("修改");
	    tv_title.setText("联系人详情");
		et_name.setText(user.Name);
		et_nickname.setText(user.SubName);
		et_phone.setText(user.MobileTel);
		et_telePhone.setText(user.FixedTel);
		et_company.setText(user.Company);
		et_address.setText(user.Address);
		imageButton.setImageResource(user.ImageId);
	}

	/**
	 * 设置EditText为不可用
	 */
	private void setEditTextDisable() {
		et_name.setEnabled(false);
		et_nickname.setEnabled(false);
		et_phone.setEnabled(false);
		et_telePhone.setEnabled(false);
		et_company.setEnabled(false);
		et_address.setEnabled(false);
		imageButton.setEnabled(false);
		setColorToGray();

	}

	/**
	 * 设置EditText为可用状态
	 */
	private void setEditTextAble() {
		et_name.setEnabled(true);
		et_nickname.setEnabled(true);
		et_phone.setEnabled(true);
		et_telePhone.setEnabled(true);
		et_company.setEnabled(true);
		et_address.setEnabled(true);
		imageButton.setEnabled(true);
		//setColorToBlack();
	}
	
	/**
	 *  设置显示的字体颜色为黑色
	 */
	private void setColorToBlack() {
		
		et_name.setTextColor(Color.BLACK);
		et_nickname.setTextColor(Color.BLACK);
		et_phone.setTextColor(Color.BLACK);
		et_telePhone.setTextColor(Color.BLACK);
		et_company.setTextColor(Color.BLACK);
		et_address.setTextColor(Color.BLACK);

	}
	
	/**
	 *  设置显示的字体颜色为白色
	 */
	private void setColorToGray() {
		et_name.setTextColor(Color.GRAY);
		et_nickname.setTextColor(Color.GRAY);
		et_phone.setTextColor(Color.GRAY);
		et_telePhone.setTextColor(Color.GRAY);
		et_company.setTextColor(Color.GRAY);
		et_address.setTextColor(Color.GRAY);
	}

	/**
	 * 获得最新数据,创建Contactinfo对象,更新数据库
	 */
	private void modify() {
		Log.d("先前", user.MobileTel);
		user.Name = et_name.getText().toString();
		user.SubName = et_nickname.getText().toString();
		user.MobileTel = et_phone.getText().toString();
		user.FixedTel = et_telePhone.getText().toString();
		user.Company = et_company.getText().toString();
		user.Address = et_address.getText().toString();
		
		if(imageChanged) {
			user.ImageId = images[currentImagePosition%images.length];
		}
		
		 Contacts c = new Contacts(ModifyActivity.this);
		 c.updateContacts(user);
		Log.d("后来", user.MobileTel);

	}
	
	public void deleteat(){
		int id = user.ContactID;
		 Contacts c = new Contacts(ModifyActivity.this);
		 c.deleteContacts(id);
		 finish();
	        Toast toast=Toast.makeText(getApplicationContext(), user.Name+"  已删除", Toast.LENGTH_SHORT); 
	        toast.show(); 
	}
	

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值