public int add(final DirectMessage[] msges) { int before = items.size(); int added = 0; for (DirectMessage msg : msges) { boolean foundConvo = false; for (DMConversation convo : items) { if (msg.getSenderId() == AccountService.getCurrentAccount().getId()) { if (msg.getRecipientId() == convo.getToId()) foundConvo = true; } else if (msg.getSenderId() == convo.getToId()) foundConvo = true; if (foundConvo) { added++; for (DirectMessage m : convo.getMessages()) { if (m.getId() == msg.getId()) continue; } convo.add(msg); break; } } if (!foundConvo) { long toId = msg.getSenderId(); String toName = msg.getSender().getName(); String toScreen = msg.getSender().getScreenName(); if (toId == AccountService.getCurrentAccount().getId()) { toId = msg.getRecipientId(); toName = msg.getRecipient().getName(); toScreen = msg.getRecipient().getScreenName(); } items.add(new DMConversation(toId, toName, toScreen, msg)); } notifyDataSetChanged(); } if (before == 0) return added; else if (added == before) return 0; else return (items.size() - before); }
public DMConversation find(String screenName) { DMConversation toReturn = null; for (DMConversation convo : items) { if (convo.getToScreenName().equals(screenName)) { toReturn = convo; break; } } return toReturn; }
public void remove(DMConversation convo) { for (int i = 0; i < items.size(); i++) { if (items.get(i).getToId() == convo.getToId()) { items.remove(i); notifyDataSetChanged(); break; } } }
public boolean update(DMConversation convo) { boolean found = false; for (int i = 0; i < items.size(); i++) { if (items.get(i).getToId() == convo.getToId()) { found = true; items.set(i, convo); notifyDataSetChanged(); break; } } return found; }
@Override public View getView(int position, View convertView, ViewGroup parent) { RelativeLayout toReturn = null; if (convertView != null) toReturn = (RelativeLayout) convertView; else toReturn = (RelativeLayout) LayoutInflater.from(context).inflate(R.layout.dm_convo_item, null); final DMConversation curItem = items.get(position); RemoteImageView profileImgView = (RemoteImageView) toReturn.findViewById(R.id.dmConvoProfileImg); if (PreferenceManager.getDefaultSharedPreferences(context) .getBoolean("enable_profileimg_download", true)) { profileImgView.setImageResource(R.drawable.sillouette); profileImgView.setImageURL(Utilities.getUserImage(curItem.getToScreenName(), context)); profileImgView.setOnClickListener( new View.OnClickListener() { public void onClick(View v) { context.startActivity( new Intent(context, ProfileScreen.class) .putExtra("screen_name", curItem.getToScreenName()) .putExtra("account", AccountService.getCurrentAccount().getId()) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); } }); } else profileImgView.setVisibility(View.GONE); final TextView messageTxt = (TextView) toReturn.findViewById(R.id.dmConvoMessageTxt); if (curItem.getLastSenderIsMe()) { View replyIndic = toReturn.findViewById(R.id.dmConvoReplyIndicator); replyIndic.setVisibility(View.VISIBLE); RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) replyIndic.getLayoutParams(); layoutParams.addRule(RelativeLayout.RIGHT_OF, R.id.dmConvoProfileImg); layoutParams.addRule(RelativeLayout.BELOW, R.id.dmConvoScreenNameTxt); layoutParams = (RelativeLayout.LayoutParams) messageTxt.getLayoutParams(); layoutParams.addRule(RelativeLayout.RIGHT_OF, R.id.dmConvoReplyIndicator); layoutParams.addRule(RelativeLayout.BELOW, R.id.dmConvoScreenNameTxt); messageTxt.setLayoutParams(layoutParams); } else { (toReturn.findViewById(R.id.dmConvoReplyIndicator)).setVisibility(View.GONE); RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) messageTxt.getLayoutParams(); layoutParams.addRule(RelativeLayout.RIGHT_OF, R.id.dmConvoProfileImg); layoutParams.addRule(RelativeLayout.BELOW, R.id.dmConvoScreenNameTxt); messageTxt.setLayoutParams(layoutParams); } FeedListAdapter.ApplyFontSize(messageTxt, context); if (PreferenceManager.getDefaultSharedPreferences(context) .getBoolean("show_real_names", false)) { ((TextView) toReturn.findViewById(R.id.dmConvoScreenNameTxt)).setText(curItem.getToName()); } else { ((TextView) toReturn.findViewById(R.id.dmConvoScreenNameTxt)) .setText("@" + curItem.getToScreenName()); } messageTxt.setText( Utilities.twitterifyText( context, curItem.getLastMessage().getText().replace("\n", " ").trim(), null, null, true, null)); return toReturn; }