/*
* 官网地站: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.graphics.drawable.ColorDrawable;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.onekeyshare.OnekeySharePage;
import cn.sharesdk.onekeyshare.OnekeyShareThemeImpl;
import cn.sharesdk.onekeyshare.themes.classic.FriendAdapter.Following;
import com.mob.tools.gui.PullToRequestView;
import com.mob.tools.utils.ResHelper;
/** 编辑界面,@好友时,弹出的好友列表 */
public abstract class FriendListPage extends OnekeySharePage implements OnClickListener, OnItemClickListener {
private static final int DESIGN_LEFT_PADDING = 40;
private Platform platform;
private LinearLayout llPage;
private RelativeLayout rlTitle;
private TextView tvCancel;
private TextView tvConfirm;
private FriendAdapter adapter;
private int lastPosition = -1;
/** 展示好友列表时,已选择要‘@’的好友个数 */
private int checkNum = 0;
public FriendListPage(OnekeyShareThemeImpl impl) {
super(impl);
}
public void setPlatform(Platform platform) {
this.platform = platform;
}
public void onCreate() {
activity.getWindow().setBackgroundDrawable(new ColorDrawable(0xfff3f3f3));
llPage = new LinearLayout(activity);
llPage.setOrientation(LinearLayout.VERTICAL);
activity.setContentView(llPage);
rlTitle = new RelativeLayout(activity);
float ratio = getRatio();
int titleHeight = (int) (getDesignTitleHeight() * ratio);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, titleHeight);
llPage.addView(rlTitle, lp);
initTitle(rlTitle, ratio);
View line = new View(activity);
LinearLayout.LayoutParams lpline = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, (int) (ratio < 1 ? 1 : ratio));
line.setBackgroundColor(0xffdad9d9);
llPage.addView(line, lpline);
FrameLayout flPage = new FrameLayout(getContext());
LinearLayout.LayoutParams lpFl = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
lpFl.weight = 1;
flPage.setLayoutParams(lpFl);
llPage.addView(flPage);
// 关注(或朋友)列表
PullToRequestView followList = new PullToRequestView(getContext());
FrameLayout.LayoutParams lpLv = new FrameLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
followList.setLayoutParams(lpLv);
flPage.addView(followList);
adapter = new FriendAdapter(this, followList);
adapter.setPlatform(platform);
adapter.setRatio(ratio);
adapter.setOnItemClickListener(this);
followList.setAdapter(adapter);
// 请求数据
followList.performPullingDown(true);
}
protected abstract float getRatio();
protected abstract int getDesignTitleHeight();
private void initTitle(RelativeLayout rlTitle, float ratio) {
tvCancel = new TextView(activity);
tvCancel.setTextColor(0xff3b3b3b);
tvCancel.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
tvCancel.setGravity(Gravity.CENTER);
int resId = ResHelper.getStringRes(activity, "ssdk_oks_cancel");
if (resId > 0) {
tvCancel.setText(resId);
}
int padding = (int) (DESIGN_LEFT_PADDING * ratio);
tvCancel.setPadding(padding, 0, padding, 0);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
rlTitle.addView(tvCancel, lp);
tvCancel.setOnClickListener(this);
TextView tvTitle = new TextView(activity);
tvTitle.setTextColor(0xff3b3b3b);
tvTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22);
tvTitle.setGravity(Gravity.CENTER);
resId = ResHelper.getStringRes(activity, "ssdk_oks_contacts");
if (resId > 0) {
tvTitle.setText(resId);
}
lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
lp.addRule(RelativeLayout.CENTER_IN_PARENT);
rlTitle.addView(tvTitle, lp);
tvConfirm = new TextView(activity);
tvConfirm.setTextColor(0xffff6d11);
tvConfirm.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
tvConfirm.setGravity(Gravity.CENTER);
resId = ResHelper.getStringRes(activity, "ssdk_oks_confirm");
if (resId > 0) {
tvConfirm.setText(resId);
}
tvConfirm.setPadding(padding, 0, padding, 0);
lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
rlTitle.addView(tvConfirm, lp);
tvConfirm.setOnClickListener(this);
}
public void onClick(View v) {
if (v.equals(tvCancel)) {
finish();
} else {
ArrayList<String> selected = new ArrayList<String>();
for (int i = 0, size = adapter.getCount(); i < size; i++) {
if (adapter.getItem(i).checked) {
selected.add(adapter.getItem(i).atName);
}
}
HashMap<String, Object> res = new HashMap<String, Object>();
res.put("selected", selected);
res.put("platform", platform);
setResult(res);
finish();
}
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if ("FacebookMessenger".equals(platform.getName())) {
if(lastPosition >= 0) {
Following lastFollwing = adapter.getItem(lastPosition);
lastFollwing.checked = false;
}
lastPosition = position;
}
Following following = adapter.getItem(position);
following.checked = !following.checked;
if(following.checked) {
checkNum++;
} else {
checkNum--;
}
updateConfirmView();
adapter.notifyDataSetChanged();
}
private void updateConfirmView() {
int resId = ResHelper.getStringRes(activity, "ssdk_oks_confirm");
String confirm = "Confirm";
if(resId > 0) {
confirm = getContext().getResources().getString(resId);
}
if(checkNum == 0) {
tvConfirm.setText(confirm);
} else if(checkNum > 0) {
tvConfirm.setText(confirm + "(" + checkNum + ")");
}
}
}