package cn.edu.chd.yitu;
import java.util.HashMap;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler.Callback;
import android.os.Message;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import cn.edu.chd.service.ShakeService;
import cn.edu.chd.values.ApplicationValues;
import cn.edu.chd.view.YiSettingButton;
import cn.edu.chd.view.YiSettingButton.OnCheckChangedListener;
import cn.edu.chd.view.YiTitleBar;
import cn.edu.chd.view.YiTitleBar.LeftButtonClickListener;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.framework.utils.UIHandler;
import cn.sharesdk.renren.Renren;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.sina.weibo.SinaWeibo.ShareParams;
import cn.sharesdk.system.email.Email;
import cn.sharesdk.system.text.ShortMessage;
import cn.sharesdk.tencent.qzone.QZone;
/**
* @author Rowand jj
*
*���ý���
*/
public class Settings extends Activity implements OnCheckChangedListener,OnSeekBarChangeListener,OnClickListener,OnGestureListener,PlatformActionListener,Callback
{
/**
* ������
*/
private YiTitleBar title_bar = null;
/**
* ��ͼʱ��Ļ�Ƿ����Ŀ���
*/
private YiSettingButton ysb_screen_switch = null;
/**
* "ҡһҡ"����Ӧ�õĿ���
*/
private YiSettingButton ysb_shake_start = null;
/**
* ��ʾ������ȵ�TextView
*/
private TextView tv_canvas_width = null;
/**
* ��ʾ�����߶ȵ�TextView
*/
private TextView tv_canvas_height = null;
/**
* ���û����߶ȵ�SeekBar
*/
private SeekBar seekbar_canvas_size_height = null;
/**
* ���û�����ȵ�SeekBar
*/
private SeekBar seekbar_canvas_size_width = null;
/**
* ����
*/
private Button but_about = null;
/**
* �û�ָ��
*/
private Button but_user_guide = null;
/**
* ����
*/
private Button but_share = null;
/**
* ����û�����
*/
private GestureDetector mGestureDetector;
/**
* ���������ķ�ֵ
*/
private static final int VALUE = 100;
private static final String TAG = "Settings";
private int defaultWidth;
private int defaultHeight;
private Dialog dialog;
private static final String SHARE_TEXT = "��Ϳ��һ�����android��2dȤζͿѻ�����֧�ָ���ͼԪ��������ɫ���任������Ȳ���.";
//----------sns����ƽ̨--------------
private Platform sinaWeibo,qqZone,renren,email,message;
private LinearLayout but_sina,but_qzone,but_renren,but_email,but_message;
private View view;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_settings);
//��ʼ��sharesdk
ShareSDK.initSDK(this);
ShareSDK.setConnTimeout(5000);
ShareSDK.setReadTimeout(10000);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
defaultWidth = dm.widthPixels;
defaultHeight = dm.heightPixels;
mGestureDetector = new GestureDetector(this,this);//ע�������¼�
initTitleBar();//��ʼ��������
initComponent();//��ʼ���ؼ�
readConfiguration();//��ȡ����,�����ڳ�ʼ���ؼ���ִ��
initSharePlatform();
initShareWindow();
}
//TODO
private void initSharePlatform()
{
sinaWeibo = ShareSDK.getPlatform(SinaWeibo.NAME);
qqZone = ShareSDK.getPlatform(QZone.NAME);
renren = ShareSDK.getPlatform(Renren.NAME);
email = ShareSDK.getPlatform(Email.NAME);
message = ShareSDK.getPlatform(ShortMessage.NAME);
sinaWeibo.setPlatformActionListener(this);
qqZone.setPlatformActionListener(this);
renren.setPlatformActionListener(this);
email.setPlatformActionListener(this);
message.setPlatformActionListener(this);
}
@Override
protected void onDestroy()
{
super.onDestroy();
ShareSDK.stopSDK(this);
}
/**
* ��ȡ������Ϣ
*/
public void readConfiguration()
{
Log.i(TAG,"WI:"+defaultWidth+",HEI"+defaultHeight);
SharedPreferences sp = this.getSharedPreferences(ApplicationValues.Settings.SETTING_PREF,MODE_PRIVATE);
String canvas_width = sp.getString(ApplicationValues.Settings.CANVAS_WIDTH,defaultWidth+"");
String canvas_height = sp.getString(ApplicationValues.Settings.CANVAS_HEIGHT,defaultHeight+"");
boolean is_screen_on = sp.getBoolean(ApplicationValues.Settings.SCREEN_STATE,false);
boolean is_shake_on = sp.getBoolean(ApplicationValues.Settings.SHAKE_MODEL, false);
//�����������ʾ��ui
seekbar_canvas_size_width.setProgress(Integer.parseInt(canvas_width)-defaultWidth);
seekbar_canvas_size_height.setProgress(Integer.parseInt(canvas_height)-defaultHeight);
tv_canvas_width.setText(canvas_width);
tv_canvas_height.setText(canvas_height);
//������״̬��ʾ��UI
ysb_screen_switch.setChecked(is_screen_on);
ysb_shake_start.setChecked(is_shake_on);
}
/**
* ��activity����֮ǰ�����������
*
* */
@Override
protected void onStop()
{
super.onStop();
SharedPreferences sp = this.getSharedPreferences(ApplicationValues.Settings.SETTING_PREF,MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString(ApplicationValues.Settings.CANVAS_WIDTH,tv_canvas_width.getText().toString());
editor.putString(ApplicationValues.Settings.CANVAS_HEIGHT,tv_canvas_height.getText().toString());
editor.putBoolean(ApplicationValues.Settings.SCREEN_STATE, ysb_screen_switch.isChecked());
editor.putBoolean(ApplicationValues.Settings.SHAKE_MODEL, ysb_shake_start.isChecked());
editor.commit();
}
/**
* ��ʼ��������
*/
private void initTitleBar()
{
title_bar = (YiTitleBar) findViewById(R.id.ytb_settings);
title_bar.setTitleName("����");
title_bar.setLeftButtonBGResource(R.drawable.setting_title_bar_selector);
title_bar.setOnLeftButtonClickListener(new LeftButtonClickListener()
{
@Override
public void leftButtonClick()
{
Settings.this.finish();
overridePendingTransition(R.anim.slide_remain, R.anim.out_left);
}
});
}
/**
* ��ʼ���ؼ�
*/
private void initComponent()
{
view = getLayoutInflater().inflate(R.layout.popupwindow_share,null);
ysb_screen_switch = (YiSettingButton) findViewById(R.id.ysb_screen_always_on);
ysb_shake_start = (YiSettingButton) findViewById(R.id.ysb_shake_start);
tv_canvas_height = (TextView) findViewById(R.id.tv_canvas_size_height);
tv_canvas_width = (TextView) findViewById(R.id.tv_canvas_size_width);
seekbar_canvas_size_height = (SeekBar) findViewById(R.id.seekbar_canvas_size_height);
seekbar_canvas_size_width = (SeekBar) findViewById(R.id.seekbar_canvas_size_width);
ysb_screen_switch.setOnCheckChangedListener(this);
ysb_shake_start.setOnCheckChangedListener(this);
ysb_screen_switch.setContentTitle(R.string.str_screen_on);
ysb_shake_start.setContentTitle(R.string.str_shake_start);
seekbar_canvas_size_height.setOnSeekBarChangeListener(this);
seekbar_canvas_size_width.setOnSeekBarChangeListener(this);
//�������ֵ
seekbar_canvas_size_width.setMax(2048-defaultWidth);
seekbar_canvas_size_height.setMax(2048-defaultHeight);
but_about = (Button) findViewById(R.id.but_about);
but_user_guide = (Button) findViewById(R.id.but_user_guide);
but_share = (Button) findViewById(R.id.but_share);
but_about.setOnClickListener(this);
but_share.setOnClickListener(this);
but_user_guide.setOnClickListener(this);
//-----------------------------------
but_email = (LinearLayout) view.findViewById(R.id.id_share_email);
but_sina = (LinearLayout) view.findViewById(R.id.id_share_sinaweibo);
but_qzone = (LinearLayout) view.findViewById(R.id.id_share_qzone);
but_renren = (LinearLayout) view.findViewById(R.id.id_share_renren);
but_message = (LinearLayout) view.findViewById(R.id.id_share_message);
Log.i(TAG,but_email.toString());
but_email.setOnClickListener(this);
but_sina.setOnClickListener(this);
but_qzone.setOnClickListener(this);
but_renren.setOnClickListener(this);
but_message.setOnClickListener(this);
}
/*
* ����Ҫ�����¶���touch�¼��ַ����ȼ�
* */
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{
this.onTouchEvent(ev);
return super.dispatchTouchEvent(ev);
}
@Override
public void onCheckChanged(View view,boolean isChecked)
{
switch (view.getId())
{
case R.id.ysb_screen_always_on:
//onstop�����б������ü���,�˴�����Ҫ����
break;
case R.id.ysb_shake_start:
if(isChecked)
{
Intent intent = new Intent(this,ShakeService.class);
this.startService(intent);
}else
{
Intent intent =new Intent(this,ShakeService.class);
this.stopService(intent);
}
break;
}
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser)
{
switch (seekBar.getId())
{
case R.id.seekbar_canvas_size_width:
progress += defaultWidth;
tv_canvas_width.setText(progress+"");
break;
case R.id.seekbar_canvas_size_height:
progress += defaultHeight;
tv_canvas_height.setText(progress+"");
break;
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar)
{
}
@Override
public void onStopTrackingTouch(SeekBar seekBar)
{
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.but_about:
Intent intent = new Intent(this,CopyRight.class);
startActivity(intent);
overridePendingTransition(R.anim.in_left, R.anim.slide_remain);
break;
case R.id.but_user_guide:
Intent intent1 = new Intent(this,UserGuide.class);
this.startActivity(intent1);
overridePendingTransition(R.anim.in_left, R.anim.slide_remain);
break;
case R.id.but_share:
// initShareWindow();
dialog.show();
break;
//---------------------------------
case R.id.id_share_email:
share_to_email();
break;
case R.id.id_share_message:
share_to_message();
break;
case R.id.id_share_qzone:
share_to_qzone();
break;
case R.id.id_share_renren:
share_to_renren();
break;
case R.id.id_share_sinaweibo:
share_to_sina();
break;
}
}
private void initShareWindow()
{
dialog = new AlertDialog.Builder(this).create();
int width = getWindowManager().getDefaultDisplay().getWidth()*4/5;
dialog.show();
LayoutParams lp = new LayoutParams(width, LayoutParams.MATCH_PARENT);
dialog.getWindow().setContentView(view,lp);
dialog.dismiss();
}
private void share_to_sina()
{
ShareParams sp = new ShareParams();
sp.setText(SHARE_TEXT);
sinaWeibo = ShareSDK.getPlatform(SinaWeibo.NAME);
sinaWeibo.setPlatformActionListener(this);
sinaWeibo.share(sp);
}
private void share_to_renren()
{
cn.sharesdk.renren.Renren.ShareParams sp = new cn.sharesdk.renren.Renren.ShareParams();
sp.setText(SHARE_TEXT);
sp.setTitleUrl("http://www.cnsoftbei.com/");
sp.setTitle("�������");
sp.setComment("��");
renren = ShareSDK.getPlatform(Renren.NAME);
renren.setPlatformActionListener(this);
renren.share(sp);
}
private void share_to_qzone()
{
cn.sharesdk.tencent.qzone.QZone.ShareParams sp = new cn.sharesdk.tencent.qzone.QZone.ShareParams();
sp.setText(SHARE_TEXT);
sp.setTitleUrl("http://www.cnsoftbei.com/");
sp.setTitle("�������");
sp.setSite("��Ϳ");
sp.setSiteUrl("http://www.cnsoftbei.com/");
qqZone = ShareSDK.getPlatform(QZone.NAME);
qqZone.setPlatformActionListener(this);
qqZone.share(sp);
}
private void share_to_email()
{
cn.sharesdk.system.email.Email.ShareParams sp = new cn.sharesdk.system.email.Email.ShareParams();
sp.setText(SHARE_TEXT);
sp.setAddress("http://www.cnsoftbei.com/");
sp.setTitle("�������");
email = ShareSDK.getPlatform(Email.NAME);
email.setPlatformActionListener(this);
email.share(sp);
}
private void share_to_message()
{
cn.sharesdk.system.text.ShortMessage.ShareParams sp = new cn.sharesdk.system.text.ShortMessage.ShareParams();
sp.setText(SHARE_TEXT);
message = ShareSDK.getPlatform(ShortMessage.NAME);
message.setPlatformActionListener(this);
message.share(sp);
}
@Override
public void onBackPressed()
{
super.onBackPressed();
overridePendingTransition(R.anim.slide_remain, R.anim.out_left);
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
return mGestureDetector.onTouchEvent(event);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY)
{
Log.i(TAG,"e1x = "+e1.getX()+",e2x="+e2.getX());
Log.i(TAG,"vx="+velocityX+",vy="+velocityY);
if(Math.abs(velocityX) > Math.abs(velocityY) && (e1.getX() - e2.getX() > VALUE))
{
this.finish();
overridePendingTransition(R.anim.slide_remain, R.anim.out_left);
return true;
}
return false;
}
@Override
public boolean onDown(MotionEvent e)
{
return false;
}
@Override
public void onShowPress(MotionEvent e)
{
}
@Override
public boolean onSingleTapUp(MotionEvent e)
{
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY)
{
return false;
}
@Override
public void onLongPress(MotionEvent e)
{
}
//-----------------share sdk ����----------------------------------
@Override
public void onCancel(Platform arg0, int arg1)
{
Message msg = Message.obtain();
msg.what = 0;
UIHandler.sendMessage(msg,this);
}
@Override
public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2)
{
Message msg = Message.obtain();
msg.what = 1;
UIHandler.sendMessage(msg,this);
}
@Override
public void onError(Platform arg0, int arg1, Throwable arg2)
{
Message msg = Message.obtain();
msg.what = -1;
UIHandler.sendMessage(msg,this);
}
@Override
public boolean handleMessage(Message msg)
{
switch (msg.what)
{
case 1:
dialog.dismiss();
break;
case 0:
dialog.dismiss();
break;
case -1:
dialog.dismiss();
break;
}
return true;
}
}