Search in sources :

Example 6 with MessageBean

use of org.qii.weiciyuan.bean.MessageBean in project weiciyuan by qii.

the class DestroyStatusDao method destroy.

public boolean destroy() throws WeiboException {
    String url = URLHelper.STATUSES_DESTROY;
    Map<String, String> map = new HashMap<String, String>();
    map.put("access_token", access_token);
    map.put("id", id);
    String jsonData = HttpUtility.getInstance().executeNormalTask(HttpMethod.Post, url, map);
    Gson gson = new Gson();
    try {
        MessageBean value = gson.fromJson(jsonData, MessageBean.class);
    } catch (JsonSyntaxException e) {
        AppLogger.e(e.getMessage());
        return false;
    }
    return true;
}
Also used : MessageBean(org.qii.weiciyuan.bean.MessageBean) JsonSyntaxException(com.google.gson.JsonSyntaxException) HashMap(java.util.HashMap) Gson(com.google.gson.Gson)

Example 7 with MessageBean

use of org.qii.weiciyuan.bean.MessageBean in project weiciyuan by qii.

the class JBMentionsWeiboNotificationServiceHelper method buildNotification.

private void buildNotification() {
    //        int count = (data.getSize() >= Integer.valueOf(SettingUtility.getMsgCount()) ? unreadBean
    //                .getMention_status() : data.getSize());
    int count = Math.min(unreadBean.getMention_status(), data.getSize());
    if (count == 0) {
        return;
    }
    Notification.Builder builder = new Notification.Builder(getBaseContext()).setTicker(ticker).setContentText(accountBean.getUsernick()).setSmallIcon(R.drawable.ic_notification).setAutoCancel(true).setContentIntent(getPendingIntent()).setOnlyAlertOnce(true);
    builder.setContentTitle(String.format(GlobalContext.getInstance().getString(R.string.new_mentions_weibo), String.valueOf(count)));
    if (count > 1) {
        builder.setNumber(count);
    }
    if (clearNotificationEventReceiver.get(accountBean.getUid()) != null) {
        Utility.unregisterReceiverIgnoredReceiverNotRegisteredException(GlobalContext.getInstance(), clearNotificationEventReceiver.get(accountBean.getUid()));
        JBMentionsWeiboNotificationServiceHelper.clearNotificationEventReceiver.put(accountBean.getUid(), null);
    }
    RecordOperationAppBroadcastReceiver receiver = new RecordOperationAppBroadcastReceiver() {

        @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());
                        ArrayList<String> ids = new ArrayList<String>();
                        for (MessageBean msg : data.getItemList()) {
                            ids.add(msg.getId());
                        }
                        NotificationDBTask.addUnreadNotification(accountBean.getUid(), ids, NotificationDBTask.UnreadDBType.mentionsWeibo);
                    //                        } catch (WeiboException ignored) {
                    } finally {
                        Utility.unregisterReceiverIgnoredReceiverNotRegisteredException(GlobalContext.getInstance(), clearNotificationEventReceiver.get(accountBean.getUid()));
                        JBMentionsWeiboNotificationServiceHelper.clearNotificationEventReceiver.put(accountBean.getUid(), null);
                    }
                }
            }).start();
        }
    };
    clearNotificationEventReceiver.put(accountBean.getUid(), receiver);
    IntentFilter intentFilter = new IntentFilter(RESET_UNREAD_MENTIONS_WEIBO_ACTION);
    GlobalContext.getInstance().registerReceiver(clearNotificationEventReceiver.get(accountBean.getUid()), intentFilter);
    Intent broadcastIntent = new Intent(RESET_UNREAD_MENTIONS_WEIBO_ACTION);
    PendingIntent deletedPendingIntent = PendingIntent.getBroadcast(GlobalContext.getInstance(), 0, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    builder.setDeleteIntent(deletedPendingIntent);
    Intent intent = WriteCommentActivity.newIntentFromNotification(getApplicationContext(), accountBean, data.getItem(currentIndex));
    PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    builder.addAction(R.drawable.comment_light, getApplicationContext().getString(R.string.comments), pendingIntent);
    if (count > 1) {
        Intent nextIntent = new Intent(JBMentionsWeiboNotificationServiceHelper.this, JBMentionsWeiboNotificationServiceHelper.class);
        nextIntent.putExtra(NotificationServiceHelper.ACCOUNT_ARG, accountBean);
        nextIntent.putExtra(NotificationServiceHelper.MENTIONS_WEIBO_ARG, data);
        nextIntent.putExtra(NotificationServiceHelper.UNREAD_ARG, unreadBean);
        nextIntent.putExtra(NotificationServiceHelper.PENDING_INTENT_INNER_ARG, clickToOpenAppPendingIntentInner);
        nextIntent.putExtra(NotificationServiceHelper.TICKER, ticker);
        String actionName;
        int nextIndex;
        int actionDrawable;
        if (currentIndex < count - 1) {
            nextIndex = currentIndex + 1;
            actionName = getString(R.string.next_message);
            actionDrawable = R.drawable.notification_action_next;
        } else {
            nextIndex = 0;
            actionName = getString(R.string.first_message);
            actionDrawable = R.drawable.notification_action_previous;
        }
        nextIntent.putExtra(NotificationServiceHelper.CURRENT_INDEX_ARG, nextIndex);
        PendingIntent retrySendIntent = PendingIntent.getService(JBMentionsWeiboNotificationServiceHelper.this, 0, nextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        builder.addAction(actionDrawable, actionName, retrySendIntent);
    }
    Notification.BigTextStyle bigTextStyle = new Notification.BigTextStyle(builder);
    if (data.getItem(currentIndex).getText().contains(accountBean.getUsernick())) {
        // mentioned you
        bigTextStyle.setBigContentTitle("@" + data.getItem(currentIndex).getUser().getScreen_name() + getString(R.string.weibo_at_to_you));
    } else {
        // retweeted your weibo
        bigTextStyle.setBigContentTitle("@" + data.getItem(currentIndex).getUser().getScreen_name() + getString(R.string.retweeted_your_weibo));
    }
    bigTextStyle.bigText(data.getItem(currentIndex).getText());
    String summaryText;
    if (count > 1) {
        summaryText = accountBean.getUsernick() + "(" + (currentIndex + 1) + "/" + count + ")";
    } else {
        summaryText = accountBean.getUsernick();
    }
    bigTextStyle.setSummaryText(summaryText);
    builder.setStyle(bigTextStyle);
    Utility.configVibrateLedRingTone(builder);
    NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(NOTIFICATION_SERVICE);
    notificationManager.notify(getMentionsWeiboNotificationId(accountBean), builder.build());
}
Also used : Context(android.content.Context) GlobalContext(org.qii.weiciyuan.support.utils.GlobalContext) MessageBean(org.qii.weiciyuan.bean.MessageBean) IntentFilter(android.content.IntentFilter) NotificationManager(android.app.NotificationManager) ArrayList(java.util.ArrayList) Intent(android.content.Intent) PendingIntent(android.app.PendingIntent) RecordOperationAppBroadcastReceiver(org.qii.weiciyuan.support.lib.RecordOperationAppBroadcastReceiver) Notification(android.app.Notification) PendingIntent(android.app.PendingIntent)

Example 8 with MessageBean

use of org.qii.weiciyuan.bean.MessageBean in project weiciyuan by qii.

the class BigTextNotificationService method buildNotification.

private void buildNotification(String uid) {
    final ValueWrapper valueWrapper = valueBagHashMap.get(uid);
    if (valueWrapper == null) {
        return;
    }
    final AccountBean accountBean = valueWrapper.accountBean;
    final MessageListBean mentionsWeibo = valueWrapper.mentionsWeibo;
    final CommentListBean mentionsComment = valueWrapper.mentionsComment;
    final CommentListBean commentsToMe = valueWrapper.commentsToMe;
    final UnreadBean unreadBean = valueWrapper.unreadBean;
    int currentIndex = valueWrapper.currentIndex;
    Intent clickToOpenAppPendingIntentInner = valueWrapper.clickToOpenAppPendingIntentInner;
    String ticker = valueWrapper.ticker;
    ArrayList<Parcelable> notificationItems = valueWrapper.notificationItems;
    //        int count = Math.min(unreadBean.getMention_status(), data.getSize());
    int count = notificationItems.size();
    if (count == 0) {
        return;
    }
    Parcelable itemBean = notificationItems.get(currentIndex);
    Notification.Builder builder = new Notification.Builder(getBaseContext()).setTicker(ticker).setContentText(ticker).setSubText(accountBean.getUsernick()).setSmallIcon(R.drawable.ic_notification).setAutoCancel(true).setContentIntent(getPendingIntent(clickToOpenAppPendingIntentInner, itemBean, accountBean)).setOnlyAlertOnce(true);
    builder.setContentTitle(getString(R.string.app_name));
    if (count > 1) {
        builder.setNumber(count);
    }
    Utility.unregisterReceiverIgnoredReceiverNotRegisteredException(GlobalContext.getInstance(), valueWrapper.clearNotificationEventReceiver);
    valueWrapper.clearNotificationEventReceiver = new RecordOperationAppBroadcastReceiver() {

        //mark these messages as read, write to database
        @Override
        public void onReceive(Context context, Intent intent) {
            new Thread(new Runnable() {

                @Override
                public void run() {
                    try {
                        ArrayList<String> ids = new ArrayList<String>();
                        if (mentionsWeibo != null) {
                            for (MessageBean msg : mentionsWeibo.getItemList()) {
                                ids.add(msg.getId());
                            }
                            NotificationDBTask.addUnreadNotification(accountBean.getUid(), ids, NotificationDBTask.UnreadDBType.mentionsWeibo);
                        }
                        ids.clear();
                        if (commentsToMe != null) {
                            for (CommentBean msg : commentsToMe.getItemList()) {
                                ids.add(msg.getId());
                            }
                            NotificationDBTask.addUnreadNotification(accountBean.getUid(), ids, NotificationDBTask.UnreadDBType.commentsToMe);
                        }
                        ids.clear();
                        if (mentionsComment != null) {
                            for (CommentBean msg : mentionsComment.getItemList()) {
                                ids.add(msg.getId());
                            }
                            NotificationDBTask.addUnreadNotification(accountBean.getUid(), ids, NotificationDBTask.UnreadDBType.mentionsComment);
                        }
                    } finally {
                        Utility.unregisterReceiverIgnoredReceiverNotRegisteredException(GlobalContext.getInstance(), valueWrapper.clearNotificationEventReceiver);
                        if (Utility.isDebugMode()) {
                            new Handler(Looper.getMainLooper()).post(new Runnable() {

                                @Override
                                public void run() {
                                    Toast.makeText(getApplicationContext(), "weiciyuan:remove notification items" + System.currentTimeMillis(), Toast.LENGTH_SHORT).show();
                                }
                            });
                        }
                    }
                }
            }).start();
        }
    };
    IntentFilter intentFilter = new IntentFilter(RESET_UNREAD_MENTIONS_WEIBO_ACTION);
    Utility.registerReceiverIgnoredReceiverHasRegisteredHereException(GlobalContext.getInstance(), valueWrapper.clearNotificationEventReceiver, intentFilter);
    Intent broadcastIntent = new Intent(RESET_UNREAD_MENTIONS_WEIBO_ACTION);
    PendingIntent deletedPendingIntent = PendingIntent.getBroadcast(GlobalContext.getInstance(), accountBean.getUid().hashCode(), broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    builder.setDeleteIntent(deletedPendingIntent);
    if (itemBean instanceof MessageBean) {
        MessageBean msg = (MessageBean) itemBean;
        Intent intent = WriteCommentActivity.newIntentFromNotification(getApplicationContext(), accountBean, msg);
        PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        builder.addAction(R.drawable.comment_light, getApplicationContext().getString(R.string.comments), pendingIntent);
    } else if (itemBean instanceof CommentBean) {
        CommentBean commentBean = (CommentBean) itemBean;
        Intent intent = WriteReplyToCommentActivity.newIntentFromNotification(getApplicationContext(), accountBean, commentBean);
        PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        builder.addAction(R.drawable.reply_to_comment_light, getApplicationContext().getString(R.string.reply_to_comment), pendingIntent);
    }
    String avatar = ((ItemBean) itemBean).getUser().getAvatar_large();
    String avatarPath = FileManager.getFilePathFromUrl(avatar, FileLocationMethod.avatar_large);
    if (ImageUtility.isThisBitmapCanRead(avatarPath) && TaskCache.isThisUrlTaskFinished(avatar)) {
        Bitmap bitmap = BitmapFactory.decodeFile(avatarPath, new BitmapFactory.Options());
        if (bitmap != null) {
            builder.setLargeIcon(bitmap);
        }
    }
    if (count > 1) {
        String actionName;
        int nextIndex;
        int actionDrawable;
        if (currentIndex < count - 1) {
            nextIndex = currentIndex + 1;
            actionName = getString(R.string.next_message);
            actionDrawable = R.drawable.notification_action_next;
        } else {
            nextIndex = 0;
            actionName = getString(R.string.first_message);
            actionDrawable = R.drawable.notification_action_previous;
        }
        Intent nextIntent = BigTextNotificationService.newIntent(accountBean, mentionsWeibo, commentsToMe, mentionsComment, unreadBean, clickToOpenAppPendingIntentInner, ticker, nextIndex);
        PendingIntent retrySendIntent = PendingIntent.getService(BigTextNotificationService.this, accountBean.getUid().hashCode(), nextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        builder.addAction(actionDrawable, actionName, retrySendIntent);
    }
    Notification.BigTextStyle bigTextStyle = new Notification.BigTextStyle(builder);
    bigTextStyle.setBigContentTitle(getItemBigContentTitle(accountBean, notificationItems, currentIndex));
    bigTextStyle.bigText(getItemBigText(notificationItems, currentIndex));
    String summaryText;
    if (count > 1) {
        summaryText = accountBean.getUsernick() + "(" + (currentIndex + 1) + "/" + count + ")";
    } else {
        summaryText = accountBean.getUsernick();
    }
    bigTextStyle.setSummaryText(summaryText);
    builder.setStyle(bigTextStyle);
    Utility.configVibrateLedRingTone(builder);
    NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(NOTIFICATION_SERVICE);
    notificationManager.notify(getMentionsWeiboNotificationId(accountBean), builder.build());
}
Also used : ArrayList(java.util.ArrayList) CommentBean(org.qii.weiciyuan.bean.CommentBean) Notification(android.app.Notification) Bitmap(android.graphics.Bitmap) UnreadBean(org.qii.weiciyuan.bean.UnreadBean) MessageListBean(org.qii.weiciyuan.bean.MessageListBean) CommentListBean(org.qii.weiciyuan.bean.CommentListBean) BitmapFactory(android.graphics.BitmapFactory) AccountBean(org.qii.weiciyuan.bean.AccountBean) Context(android.content.Context) GlobalContext(org.qii.weiciyuan.support.utils.GlobalContext) MessageBean(org.qii.weiciyuan.bean.MessageBean) IntentFilter(android.content.IntentFilter) NotificationManager(android.app.NotificationManager) Handler(android.os.Handler) Intent(android.content.Intent) PendingIntent(android.app.PendingIntent) Parcelable(android.os.Parcelable) RecordOperationAppBroadcastReceiver(org.qii.weiciyuan.support.lib.RecordOperationAppBroadcastReceiver) PendingIntent(android.app.PendingIntent)

Example 9 with MessageBean

use of org.qii.weiciyuan.bean.MessageBean in project weiciyuan by qii.

the class StatusesTimeLineDao method getGSONMsgList.

public MessageListBean getGSONMsgList() throws WeiboException {
    String url = URLHelper.STATUSES_TIMELINE_BY_ID;
    Map<String, String> map = new HashMap<String, String>();
    map.put("access_token", access_token);
    map.put("uid", uid);
    map.put("since_id", since_id);
    map.put("max_id", max_id);
    map.put("count", count);
    map.put("page", page);
    map.put("screen_name", screen_name);
    map.put("base_app", base_app);
    map.put("feature", feature);
    map.put("trim_user", trim_user);
    String jsonData = HttpUtility.getInstance().executeNormalTask(HttpMethod.Get, url, map);
    Gson gson = new Gson();
    MessageListBean value = null;
    try {
        value = gson.fromJson(jsonData, MessageListBean.class);
    } catch (JsonSyntaxException e) {
        AppLogger.e(e.getMessage());
    }
    if (value != null && value.getSize() > 0) {
        for (MessageBean b : value.getItemList()) {
            TimeUtility.dealMills(b);
            TimeLineUtility.addJustHighLightLinks(b);
        }
    }
    return value;
}
Also used : MessageBean(org.qii.weiciyuan.bean.MessageBean) JsonSyntaxException(com.google.gson.JsonSyntaxException) HashMap(java.util.HashMap) MessageListBean(org.qii.weiciyuan.bean.MessageListBean) Gson(com.google.gson.Gson)

Example 10 with MessageBean

use of org.qii.weiciyuan.bean.MessageBean in project weiciyuan by qii.

the class UnreadMsgReceiver method showNotification.

private void showNotification(Context context, AccountBean accountBean, MessageListBean mentionsWeiboData, CommentListBean commentsToMeData, CommentListBean mentionsCommentData, UnreadBean unreadBean) {
    Intent clickNotificationToOpenAppPendingIntentInner = MainTimeLineActivity.newIntent(accountBean, mentionsWeiboData, mentionsCommentData, commentsToMeData, unreadBean);
    clickNotificationToOpenAppPendingIntentInner.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    String accountId = accountBean.getUid();
    Set<String> dbUnreadMentionsWeibo = NotificationDBTask.getUnreadMsgIds(accountId, NotificationDBTask.UnreadDBType.mentionsWeibo);
    Set<String> dbUnreadMentionsComment = NotificationDBTask.getUnreadMsgIds(accountId, NotificationDBTask.UnreadDBType.mentionsComment);
    Set<String> dbUnreadCommentsToMe = NotificationDBTask.getUnreadMsgIds(accountId, NotificationDBTask.UnreadDBType.commentsToMe);
    if (mentionsWeiboData != null && mentionsWeiboData.getSize() > 0) {
        List<MessageBean> msgList = mentionsWeiboData.getItemList();
        Iterator<MessageBean> iterator = msgList.iterator();
        while (iterator.hasNext()) {
            MessageBean msg = iterator.next();
            if (dbUnreadMentionsWeibo.contains(msg.getId())) {
                iterator.remove();
            }
        }
    }
    if (mentionsCommentData != null && mentionsCommentData.getSize() > 0) {
        List<CommentBean> msgList = mentionsCommentData.getItemList();
        Iterator<CommentBean> iterator = msgList.iterator();
        while (iterator.hasNext()) {
            CommentBean msg = iterator.next();
            if (dbUnreadMentionsComment.contains(msg.getId())) {
                iterator.remove();
            }
        }
    }
    if (commentsToMeData != null && commentsToMeData.getSize() > 0) {
        List<CommentBean> msgList = commentsToMeData.getItemList();
        Iterator<CommentBean> iterator = msgList.iterator();
        while (iterator.hasNext()) {
            CommentBean msg = iterator.next();
            if (dbUnreadCommentsToMe.contains(msg.getId())) {
                iterator.remove();
            }
        }
    }
    boolean mentionsWeibo = (mentionsWeiboData != null && mentionsWeiboData.getSize() > 0);
    boolean mentionsComment = (mentionsCommentData != null && mentionsCommentData.getSize() > 0);
    boolean commentsToMe = (commentsToMeData != null && commentsToMeData.getSize() > 0);
    if (!mentionsWeibo && !mentionsComment && !commentsToMe) {
        return;
    }
    //        boolean commentsToMeDataSizeIsLarge = (commentsToMeData != null) && (
    //                commentsToMeData.getSize() >= Integer.valueOf(
    //                        SettingUtility.getMsgCount()));
    //
    //        boolean mentionsWeiboDataSizeIsLarge = (mentionsWeiboData != null) && (
    //                mentionsWeiboData.getSize() >= Integer.valueOf(
    //                        SettingUtility.getMsgCount()));
    //
    //        boolean mentionsCommentDataSizeIsLarge = (mentionsCommentData != null) && (
    //                mentionsCommentData.getSize() >= Integer.valueOf(
    //                        SettingUtility.getMsgCount()));
    //
    //        boolean showSimpleTextNotification = commentsToMeDataSizeIsLarge
    //                || mentionsWeiboDataSizeIsLarge || mentionsCommentDataSizeIsLarge;
    //        if (showSimpleTextNotification) {
    //            String ticker = NotificationUtility
    //                    .getTicker(unreadBean);
    //            Intent intent = new Intent(context,
    //                    SimpleTextNotificationService.class);
    //
    //            intent.putExtra(NotificationServiceHelper.ACCOUNT_ARG, accountBean);
    //            intent.putExtra(NotificationServiceHelper.UNREAD_ARG, unreadBean);
    //            intent.putExtra(NotificationServiceHelper.PENDING_INTENT_INNER_ARG,
    //                    clickNotificationToOpenAppPendingIntentInner);
    //            intent.putExtra(NotificationServiceHelper.TICKER, ticker);
    //            context.startService(intent);
    //
    //        } else {
    String ticker = NotificationUtility.getTicker(unreadBean, mentionsWeiboData, mentionsCommentData, commentsToMeData);
    Intent intent = BigTextNotificationService.newIntent(accountBean, mentionsWeiboData, commentsToMeData, mentionsCommentData, unreadBean, clickNotificationToOpenAppPendingIntentInner, ticker, 0);
    context.startService(intent);
}
Also used : MessageBean(org.qii.weiciyuan.bean.MessageBean) Intent(android.content.Intent) CommentBean(org.qii.weiciyuan.bean.CommentBean)

Aggregations

MessageBean (org.qii.weiciyuan.bean.MessageBean)52 Gson (com.google.gson.Gson)21 JsonSyntaxException (com.google.gson.JsonSyntaxException)16 ArrayList (java.util.ArrayList)9 HashMap (java.util.HashMap)8 MessageListBean (org.qii.weiciyuan.bean.MessageListBean)8 Cursor (android.database.Cursor)7 Intent (android.content.Intent)6 CommentBean (org.qii.weiciyuan.bean.CommentBean)6 UserBean (org.qii.weiciyuan.bean.UserBean)6 DatabaseUtils (android.database.DatabaseUtils)4 SQLException (android.database.SQLException)4 View (android.view.View)4 PendingIntent (android.app.PendingIntent)3 Drawable (android.graphics.drawable.Drawable)3 SpannableString (android.text.SpannableString)3 AbsListView (android.widget.AbsListView)3 ListView (android.widget.ListView)3 RelativeLayout (android.widget.RelativeLayout)3 TextView (android.widget.TextView)3