package com.partynetwork.iparty.app.common;
import java.util.regex.Pattern;
import com.partynetwork.dataprovider.util.ActionUtil;
import com.partynetwork.iparty.app.AppContext;
import com.partynetwork.iparty.app.ui.GuideActivity;
import com.partynetwork.iparty.assistant.OrderInfoActivity;
import com.partynetwork.iparty.contacts.ContactsListActivity;
import com.partynetwork.iparty.flipmenu.Main;
import com.partynetwork.iparty.imessage.ChatActivity;
import com.partynetwork.iparty.imessage.MessageInfoActivity;
import com.partynetwork.iparty.imessage.MessageSplashActivity;
import com.partynetwork.iparty.iparty.CityIpartyActivity;
import com.partynetwork.iparty.iparty.IpartyInfoActivity;
import com.partynetwork.iparty.iparty.IpartyParticipantActivity;
import com.partynetwork.iparty.login.Login;
import com.partynetwork.iparty.login.Register4;
import com.partynetwork.iparty.personal.PersonalActivity;
import com.partynetwork.iparty.scanqr.CaptureResultActivity;
import com.partynetwork.iparty.site.SiteUserInfoQRActivity;
import com.partynetwork.myui.MyWebViewActivity;
import com.zxing.activity.CaptureActivity;
import eu.inmite.android.lib.dialogs.SimpleDialogFragment;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
import android.view.View;
import android.widget.Toast;
/**
* 应用程序UI工具包:封装UI相关的一些操作
*
* @author liux (http://my.oschina.net/liux)
* @version 1.0
* @created 2012-3-21
*/
public class UIHelper {
public final static int APP_EXIT = 0x44;
public final static int LISTVIEW_ACTION_INIT = 0x01;
public final static int LISTVIEW_ACTION_REFRESH = 0x02;
public final static int LISTVIEW_ACTION_SCROLL = 0x03;
public final static int LISTVIEW_ACTION_CHANGE_CATALOG = 0x04;
public final static int LISTVIEW_DATA_MORE = 0x01;
public final static int LISTVIEW_DATA_LOADING = 0x02;
public final static int LISTVIEW_DATA_FULL = 0x03;
public final static int LISTVIEW_DATA_EMPTY = 0x04;
public final static int LISTVIEW_DATATYPE_NEWS = 0x01;
public final static int LISTVIEW_DATATYPE_BLOG = 0x02;
public final static int LISTVIEW_DATATYPE_POST = 0x03;
public final static int LISTVIEW_DATATYPE_TWEET = 0x04;
public final static int LISTVIEW_DATATYPE_ACTIVE = 0x05;
public final static int LISTVIEW_DATATYPE_MESSAGE = 0x06;
public final static int LISTVIEW_DATATYPE_COMMENT = 0x07;
public final static int REQUEST_CODE_FOR_RESULT = 0x01;
public final static int REQUEST_CODE_FOR_REPLY = 0x02;
/** 表情图片匹配 */
private static Pattern facePattern = Pattern
.compile("\\[{1}([0-9]\\d*)\\]{1}");
/** 全局web样式 */
public final static String WEB_STYLE = "<style>* {font-size:16px;line-height:20px;} p {color:#333;} a {color:#3E62A6;} img {max-width:310px;} "
+ "img.alignleft {float:left;max-width:120px;margin:0 10px 5px 0;border:1px solid #ccc;background:#fff;padding:2px;} "
+ "pre {font-size:9pt;line-height:12pt;font-family:Courier New,Arial;border:1px solid #ddd;border-left:5px solid #6CE26C;background:#f6f6f6;padding:5px;} "
+ "a.tag {font-size:15px;text-decoration:none;background-color:#bbd6f3;border-bottom:2px solid #3E6D8E;border-right:2px solid #7F9FB6;color:#284a7b;margin:2px 2px 2px 0;padding:2px 4px;white-space:nowrap;}</style>";
/**
* 调用系统安装了的应用分享
*
* @param context
* @param title
* @param url
*/
public static void showShareMore(Activity context, final String title,
final String url) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "分享:" + title);
intent.putExtra(Intent.EXTRA_TEXT, title + " " + url);
context.startActivity(Intent.createChooser(intent, "选择分享"));
}
/**
* 打开浏览器
*
* @param context
* @param url
*/
public static void openBrowser(Context context, String url) {
try {
Uri uri = Uri.parse(url);
Intent it = new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(it);
} catch (Exception e) {
e.printStackTrace();
ToastMessage(context, "无法浏览此网页", 500);
}
}
/**
* 组合动态的回复文本
*
* @param name
* @param body
* @return
*/
public static SpannableString parseActiveReply(String name, String body) {
SpannableString sp = new SpannableString(name + ":" + body);
// 设置用户名字体加粗、高亮
sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0,
name.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
sp.setSpan(new ForegroundColorSpan(Color.parseColor("#0e5986")), 0,
name.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return sp;
}
/**
* 组合回复引用文本
*
* @param name
* @param body
* @return
*/
public static SpannableString parseQuoteSpan(String name, String body) {
SpannableString sp = new SpannableString("回复:" + name + "\n" + body);
// 设置用户名字体加粗、高亮
sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 3,
3 + name.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
sp.setSpan(new ForegroundColorSpan(Color.parseColor("#0e5986")), 3,
3 + name.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return sp;
}
/**
* 弹出Toast消息
*
* @param msg
*/
public static void ToastMessage(Context cont, String msg) {
Toast.makeText(cont, msg, Toast.LENGTH_SHORT).show();
}
public static void ToastMessage(Context cont, int msg) {
Toast.makeText(cont, msg, Toast.LENGTH_SHORT).show();
}
public static void ToastMessage(Context cont, String msg, int time) {
Toast.makeText(cont, msg, time).show();
}
/**
* 点击返回监听事件
*
* @param activity
* @return
*/
public static View.OnClickListener finish(final Activity activity) {
return new View.OnClickListener() {
public void onClick(View v) {
activity.finish();
}
};
}
/**
* 提示是否退出系统对话框
* */
public static void Exit(final FragmentActivity activity) {
SimpleDialogFragment
.createBuilder(activity, activity.getSupportFragmentManager())
.setTitle("退出程序").setMessage("是否确认退出程序?")
.setPositiveButtonText("取消").setNegativeButtonText("确定")
.setRequestCode(APP_EXIT).setTag("custom-tag").show();
}
/**
* 清除app缓存
*
* @param activity
*/
public static void clearAppCache(Activity activity) {
final AppContext ac = (AppContext) activity.getApplication();
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1) {
ToastMessage(ac, "缓存清除成功");
} else {
ToastMessage(ac, "缓存清除失败");
}
}
};
new Thread() {
public void run() {
Message msg = new Message();
try {
ac.clearAppCache();
msg.what = 1;
} catch (Exception e) {
e.printStackTrace();
msg.what = -1;
}
handler.sendMessage(msg);
}
}.start();
}
/**
* 跳到party详情页
*
* @param context
* @param partyId
* iPartyId
*/
public static void showPartyInfo(Context context, int partyId) {
Intent intent = new Intent(context, IpartyInfoActivity.class);
intent.putExtra(IpartyInfoActivity.PARTY_ID, partyId);
context.startActivity(intent);
}
/**
* 跳到城市派对列表
*
* @param mContext
* @param type
* @param cityNum
*/
public static void showParty4City(Context mContext, int type, String cityNum) {
Intent intent = new Intent(mContext, CityIpartyActivity.class);
intent.putExtra("ipartyType", type);
intent.putExtra("cityNum", cityNum);
mContext.startActivity(intent);
}
/**
* 显示Party参加者列表
*
* @param context
* @param partyId
*/
public static void showPartyJoin(Context context, int partyId) {
Intent intent = new Intent(context, IpartyParticipantActivity.class);
intent.putExtra(IpartyParticipantActivity.PARTY_ID, partyId);
context.startActivity(intent);
}
/**
* 显示登录页面
*
* @param activity
*/
public static void showLoginPage(Context context) {
Intent intent = new Intent(context, Login.class);
if (context instanceof Main) {
intent.putExtra("LOGINTYPE", Login.LOGIN_MAIN);
} else if (context instanceof Register4) {
intent.putExtra("LOGINTYPE", Login.LOGIN_REGISTER);
} else if (context instanceof GuideActivity) {
intent.putExtra("LOGINTYPE", Login.LOGIN_GUI);
} else {
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
context.startActivity(intent);
}
/**
* 用户登录或注销
*
* @param activity
*/
public static void loginOrLogout(Activity activity) {
AppContext ac = (AppContext) activity.getApplication();
if (ac.isLogin()) {
ac.Logout();
ToastMessage(activity, "已退出登录");
} else {
showLoginPage(activity);
}
}
/**
* 跳到二维码扫描页面,并回调
*
* @param acitvity
*/
public static void showCapturePage(Context context) {
Intent intent = new Intent(context, CaptureActivity.class);
context.startActivity(intent);
}
/**
* 跳到扫描结果显示页面
*
* @param context
* @param resultStr
*/
public static void showCaptureResultPage(Context context, String resultStr) {
Intent intent = new Intent(context, CaptureResultActivity.class);
intent.putExtra(CaptureResultActivity.QR_RESULT, resultStr);
context.startActivity(intent);
}
/**
* 显示用户二维码页面
*
* @param context
*/
public static void showUserQR(Context context) {
Intent intent = new Intent(context, SiteUserInfoQRActivity.class);
context.startActivity(intent);
}
/**
* 跳到订单详情页
*
* @param context
* @param orderId
* 订单Id
*/
public static void showOrderInfo(Context context, int orderId) {
Intent intent = new Intent(context, OrderInfoActivity.class);
intent.putExtra(OrderInfoActivity.ORDER_ID, orderId);
context.startActivity(intent);
}
/**
* 跳到个人中心
*
* @param context
* @param userId
* 用户Id
*/
public static void showUserCenter(Context context, int userId) {
Intent intent = new Intent(context, PersonalActivity.class);
intent.putExtra(PersonalActivity.USER_ID, userId);
context.startActivity(intent);
}
/**
* 跳到webview
*
* @param context
* @param title
* 显示的标题
* @param url
* 打开的网页Url
*/
public static void showWebPage(Context context, String title, String url) {
Intent intent = new Intent(context, MyWebViewActivity.class);
intent.putExtra(MyWebViewActivity.TITLE, title);
intent.putExtra(MyWebViewActivity.URL, url);
context.startActivity(intent);
}
/**
* 显示聊天界面
*
* @param context
* @param to
*/
public static void showChat(Context context, String to) {
Intent intent = new Intent(context, ChatActivity.class);
intent.putExtra(ChatActivity.WITH_USER, to);
context.startActivity(intent);
}
/**
* 显示聊天选择页面
*
* @param context
* @param to
*/
public static void showChatSplash(Context context, int to) {
Intent intent = new Intent(context, MessageSplashActivity.class);
intent.putExtra("Uid", to);
context.startActivity(intent);
}
/**
* 显示通知界面
*
* @param context
* @param messageType
*/
public static void showNotice(Context context, int messageType) {
Intent intent = new Intent(context, MessageInfoActivity.class);
intent.putExtra(MessageInfoActivity.MESSAGE_TYPE, messageType);
context.startActivity(intent);
}
/**
* 显示人脉列表页面
*
* @param context
* @param userType
*/
public static void showContactsList(Context context, int userType) {
Intent intent = new Intent(context, ContactsListActivity.class);
intent.putExtra(ContactsListActivity.USER_TYPE, userType);
context.startActivity(intent);
}
}