package org.qii.weiciyuan.othercomponent.unreadnotification;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import org.qii.weiciyuan.R;
import org.qii.weiciyuan.bean.AccountBean;
import org.qii.weiciyuan.bean.CommentListBean;
import org.qii.weiciyuan.bean.MessageListBean;
import org.qii.weiciyuan.bean.UnreadBean;
import org.qii.weiciyuan.dao.unread.ClearUnreadDao;
import org.qii.weiciyuan.support.error.WeiboException;
import org.qii.weiciyuan.support.settinghelper.SettingUtility;
import org.qii.weiciyuan.support.utils.GlobalContext;
import org.qii.weiciyuan.support.utils.Utility;
import org.qii.weiciyuan.ui.main.MainTimeLineActivity;
/**
* User: qii
* Date: 12-12-5
*/
@Deprecated
public class ICSNotification {
private Context context;
private AccountBean accountBean;
private CommentListBean comment;
private MessageListBean repost;
private CommentListBean mentionCommentsResult;
private UnreadBean unreadBean;
//only leave one broadcast receiver
private static BroadcastReceiver clearNotificationEventReceiver;
public ICSNotification(Context context,
AccountBean accountBean,
CommentListBean comment,
MessageListBean repost,
CommentListBean mentionCommentsResult, UnreadBean unreadBean) {
this.context = context;
this.accountBean = accountBean;
this.comment = comment;
this.repost = repost;
this.mentionCommentsResult = mentionCommentsResult;
this.unreadBean = unreadBean;
}
private PendingIntent getPendingIntent() {
Intent i = new Intent(context, MainTimeLineActivity.class);
i.putExtra("account", accountBean);
i.putExtra("comment", comment);
i.putExtra("repost", repost);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, Long.valueOf(accountBean.getUid()).intValue(), i, PendingIntent.FLAG_UPDATE_CURRENT);
return pendingIntent;
}
private String getTicker() {
int mentionCmt = unreadBean.getMention_cmt();
int mentionStatus = unreadBean.getMention_status();
int mention = mentionStatus + mentionCmt;
int cmt = unreadBean.getCmt();
StringBuilder stringBuilder = new StringBuilder();
if (mention > 0) {
String txt = String.format(context.getString(R.string.new_mentions), String.valueOf(mention));
stringBuilder.append(txt);
}
if (cmt > 0) {
if (mention > 0)
stringBuilder.append("、");
String txt = String.format(context.getString(R.string.new_comments), String.valueOf(cmt));
stringBuilder.append(txt);
}
return stringBuilder.toString();
}
private int getCount() {
int count = 0;
if (SettingUtility.allowMentionToMe()) {
count += unreadBean.getMention_status();
}
if (SettingUtility.allowMentionToMe()) {
count += unreadBean.getCmt();
}
if (SettingUtility.allowMentionCommentToMe()) {
count += unreadBean.getMention_cmt();
}
return count;
}
public Notification get() {
Notification.Builder builder = new Notification.Builder(context)
.setTicker(getTicker())
.setContentTitle(getTicker())
.setContentText(accountBean.getUsernick())
.setSmallIcon(R.drawable.ic_notification)
.setAutoCancel(true)
.setContentIntent(getPendingIntent())
.setOnlyAlertOnce(true);
if (getCount() > 1) {
builder.setNumber(getCount());
}
Utility.configVibrateLedRingTone(builder);
if (clearNotificationEventReceiver != null) {
GlobalContext.getInstance().unregisterReceiver(clearNotificationEventReceiver);
ICSNotification.clearNotificationEventReceiver = null;
}
clearNotificationEventReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
new Thread(new Runnable() {
@Override
public void run() {
try {
new ClearUnreadDao(accountBean.getAccess_token()).clearMentionStatusUnread(unreadBean, accountBean.getUid());
new ClearUnreadDao(accountBean.getAccess_token()).clearMentionCommentUnread(unreadBean, accountBean.getUid());
new ClearUnreadDao(accountBean.getAccess_token()).clearCommentUnread(unreadBean, accountBean.getUid());
} catch (WeiboException ignored) {
} finally {
GlobalContext.getInstance().unregisterReceiver(clearNotificationEventReceiver);
ICSNotification.clearNotificationEventReceiver = null;
}
}
}).start();
}
};
IntentFilter intentFilter = new IntentFilter("org.qii.weiciyuan.Notification.unread");
GlobalContext.getInstance().registerReceiver(clearNotificationEventReceiver, intentFilter);
Intent broadcastIntent = new Intent("org.qii.weiciyuan.Notification.unread");
PendingIntent deletedPendingIntent = PendingIntent.getBroadcast(GlobalContext.getInstance(), 0, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setDeleteIntent(deletedPendingIntent);
return builder.getNotification();
}
}