content: /*
   * 官网地站:http://www.mob.com
   * 技术支持QQ: 4006852216
   * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）
   *
   * Copyright (c) 2013年 mob.com. All rights reserved.
   */
  
  package cn.sharesdk.onekeyshare.themes.classic;
  
  import java.util.ArrayList;
  import java.util.HashMap;
  
  import android.app.Activity;
  import android.content.res.Configuration;
  import android.graphics.Bitmap;
  import android.graphics.drawable.ColorDrawable;
  import android.text.Editable;
  import android.text.TextUtils;
  import android.text.TextWatcher;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.view.ViewGroup.LayoutParams;
  import android.view.WindowManager;
  import android.widget.EditText;
  import android.widget.LinearLayout;
  import android.widget.RelativeLayout;
  import android.widget.ScrollView;
  import android.widget.TextView;
  import android.widget.Toast;
  import cn.sharesdk.framework.Platform;
  import cn.sharesdk.framework.Platform.ShareParams;
  import cn.sharesdk.framework.ShareSDK;
  import cn.sharesdk.onekeyshare.OnekeySharePage;
  import cn.sharesdk.onekeyshare.OnekeyShareThemeImpl;
  import cn.sharesdk.onekeyshare.themes.classic.land.FriendListPageLand;
  import cn.sharesdk.onekeyshare.themes.classic.port.FriendListPagePort;
  
  import com.mob.tools.gui.AsyncImageView;
  import com.mob.tools.utils.DeviceHelper;
  import com.mob.tools.utils.ResHelper;
  
  public class EditPage extends OnekeySharePage implements OnClickListener, TextWatcher, Runnable {
  	private OnekeyShareThemeImpl impl;
  	protected Platform platform;
  	protected ShareParams sp;
  
  	protected LinearLayout llPage;
  	protected RelativeLayout rlTitle;
  	protected ScrollView svContent;
  	protected EditText etContent;
  	protected TextView tvCancel;
  	protected TextView tvShare;
  	protected RelativeLayout rlThumb;
  	/** 异步加载图片的控件 */
  	protected AsyncImageView aivThumb;
  	protected XView xvRemove;
  	protected LinearLayout llBottom;
  	protected TextView tvAt;
  	protected TextView tvTextCouter;
  
  	protected Bitmap thumb;
  	protected int maxBodyHeight;
  
  	public EditPage(OnekeyShareThemeImpl impl) {
  		super(impl);
  		this.impl = impl;
  	}
  
  	public void setPlatform(Platform platform) {
  		this.platform = platform;
  	}
  
  	public void setShareParams(ShareParams sp) {
  		this.sp = sp;
  	}
  
  	public void setActivity(Activity activity) {
  		super.setActivity(activity);
  		if (isDialogMode()) {
  			System.err.println("Theme classic does not support dialog mode!");
  //			activity.setTheme(android.R.style.Theme_Dialog);
  //			activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
  //			if (Build.VERSION.SDK_INT >= 11) {
  //				try {
  //					ReflectHelper.invokeInstanceMethod(activity, "setFinishOnTouchOutside", false);
  //				} catch (Throwable e) {}
  //			}
  		}
  
  		activity.getWindow().setSoftInputMode(
  				WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE |
  				WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
  	}
  
  	public void onCreate() {
  		activity.getWindow().setBackgroundDrawable(new ColorDrawable(0xfff3f3f3));
  	}
  
  	/** 取消分享时，执行的方法 */
  	private void cancelAndFinish() {
  		// 分享失败的统计
  		ShareSDK.logDemoEvent(5, platform);
  		finish();
  	}
  
  	/** 执行分享时的方法 */
  	private void shareAndFinish() {
  		int resId = ResHelper.getStringRes(activity, "ssdk_oks_sharing");
  		if (resId > 0) {
  			Toast.makeText(activity, resId, Toast.LENGTH_SHORT).show();
  		}
  
  		if (isDisableSSO()) {
  			platform.SSOSetting(true);
  		}
  		platform.setPlatformActionListener(getCallback());
  		platform.share(sp);
  
  		finish();
  	}
  
  	/** 编辑界面，显示的图片 */
  	private void showThumb(Bitmap pic) {
  		PicViewerPage page = new PicViewerPage(impl);
  		page.setImageBitmap(pic);
  		page.show(activity, null);
  	}
  
  	private void removeThumb() {
  		sp.setImageArray(null);
  		sp.setImageData(null);
  		sp.setImagePath(null);
  		sp.setImageUrl(null);
  	}
  
  	/** @ 好友时，展示的好友列表 */
  	private void showFriendList() {
  		FriendListPage page;
  		int orientation = activity.getResources().getConfiguration().orientation;
  		if (orientation == Configuration.ORIENTATION_PORTRAIT) {
  			page = new FriendListPagePort(impl);
  		} else {
  			page = new FriendListPageLand(impl);
  		}
  		page.setPlatform(platform);
  		page.showForResult(platform.getContext(), null, this);
  	}
  
  	public void onResult(HashMap<String, Object> data) {
  		String atText = getJoinSelectedUser(data);
  		if(!TextUtils.isEmpty(atText)) {
  			etContent.append(atText);
  		}
  	}
  
  	private String getJoinSelectedUser(HashMap<String, Object> data) {
  		if (data != null && data.containsKey("selected")) {
  			@SuppressWarnings("unchecked")
  			ArrayList<String> selected = (ArrayList<String>) data.get("selected");
  			String platform = ((Platform)data.get("platform")).getName();
  			if("FacebookMessenger".equals(platform)) {
  				return null;
  			}
  			StringBuilder sb = new StringBuilder();
  			for (String sel : selected) {
  				sb.append('@').append(sel).append(' ');
  			}
  			return sb.toString();
  		}
  		return null;
  	}
  
  	protected boolean isShowAtUserLayout(String platformName) {
  		return "SinaWeibo".equals(platformName)
  				|| "TencentWeibo".equals(platformName)
  				|| "Facebook".equals(platformName)
  				|| "Twitter".equals(platformName);
  	}
  
  	public void onClick(View v) {
  		if (v.equals(tvCancel)) {
  			cancelAndFinish();
  		} else if (v.equals(tvShare)) {
  			sp.setText(etContent.getText().toString().trim());
  			shareAndFinish();
  		} else if (v.equals(aivThumb)) {
  			showThumb(thumb);
  		} else if (v.equals(xvRemove)) {
  			maxBodyHeight = 0;
  			rlThumb.setVisibility(View.GONE);
  			llPage.measure(0, 0);
  			onTextChanged(etContent.getText(), 0, 0, 0);
  			removeThumb();
  		} else if (v.equals(tvAt)) {
  			showFriendList();
  		}
  	}
  
  	public void onTextChanged(CharSequence s, int start, int before, int count) {
  		tvTextCouter.setText(String.valueOf(s.length()));
  
  		if (maxBodyHeight == 0) {
  			maxBodyHeight = llPage.getHeight() - rlTitle.getHeight() - llBottom.getHeight();
  		}
  
  		if (maxBodyHeight > 0) {
  			svContent.post(this);
  		}
  	}
  
  	/** 动态适配编辑界面的高度 */
  	public void run() {
  		int height = svContent.getChildAt(0).getHeight();
  		RelativeLayout.LayoutParams lp = ResHelper.forceCast(svContent.getLayoutParams());
  		if (height > maxBodyHeight && lp.height != maxBodyHeight) {
  			lp.height = maxBodyHeight;
  			svContent.setLayoutParams(lp);
  		} else if (height < maxBodyHeight && lp.height == maxBodyHeight) {
  			lp.height = LayoutParams.WRAP_CONTENT;
  			svContent.setLayoutParams(lp);
  		}
  	}
  
  	public void afterTextChanged(Editable s) {
  
  	}
  
  	public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  
  	}
  
  	public void onPause() {
  		DeviceHelper.getInstance(activity).hideSoftInput(getContentView());
  		super.onPause();
  	}
  
  }
  