public void queryServerSearch(final String query) { if (query == null || query.length() < 5) { if (reqId != 0) { ConnectionsManager.getInstance().cancelRpc(reqId, true); reqId = 0; } globalSearch.clear(); lastReqId = 0; notifyDataSetChanged(); return; } TLRPC.TL_contacts_search req = new TLRPC.TL_contacts_search(); req.q = query; req.limit = 50; final int currentReqId = ++lastReqId; reqId = ConnectionsManager.getInstance() .performRpc( req, new RPCRequest.RPCRequestDelegate() { @Override public void run(final TLObject response, final TLRPC.TL_error error) { AndroidUtilities.RunOnUIThread( new Runnable() { @Override public void run() { if (currentReqId == lastReqId) { if (error == null) { TLRPC.TL_contacts_found res = (TLRPC.TL_contacts_found) response; globalSearch = res.users; lastFoundUsername = query; notifyDataSetChanged(); } } reqId = 0; } }); } }, true, RPCRequest.RPCRequestClassGeneric | RPCRequest.RPCRequestClassFailOnServerErrors); }
public void build(int width, int height) { CharSequence nameString = ""; TextPaint currentNamePaint; drawNameBroadcast = false; drawNameLock = false; drawNameGroup = false; if (encryptedChat != null) { drawNameLock = true; if (!LocaleController.isRTL) { nameLockLeft = AndroidUtilities.dp(61 + (usePadding ? 11 : 0)); nameLeft = AndroidUtilities.dp(65 + (usePadding ? 11 : 0)) + lockDrawable.getIntrinsicWidth(); } else { nameLockLeft = width - AndroidUtilities.dp(63 + (usePadding ? 11 : 0)) - lockDrawable.getIntrinsicWidth(); nameLeft = usePadding ? AndroidUtilities.dp(11) : 0; } nameLockTop = AndroidUtilities.dp(15); } else { if (chat != null) { nameLockTop = AndroidUtilities.dp(26); if (chat.id < 0) { drawNameBroadcast = true; } else { drawNameGroup = true; } if (!LocaleController.isRTL) { nameLockLeft = AndroidUtilities.dp(61 + (usePadding ? 11 : 0)); nameLeft = AndroidUtilities.dp(65 + (usePadding ? 11 : 0)) + (drawNameGroup ? groupDrawable.getIntrinsicWidth() : broadcastDrawable.getIntrinsicWidth()); } else { nameLockLeft = width - AndroidUtilities.dp(63 + (usePadding ? 11 : 0)) - (drawNameGroup ? groupDrawable.getIntrinsicWidth() : broadcastDrawable.getIntrinsicWidth()); nameLeft = usePadding ? AndroidUtilities.dp(11) : 0; } } else { if (!LocaleController.isRTL) { nameLeft = AndroidUtilities.dp(61 + (usePadding ? 11 : 0)); } else { nameLeft = usePadding ? AndroidUtilities.dp(11) : 0; } } } if (currentName != null) { nameString = currentName; } else { String nameString2 = ""; if (chat != null) { nameString2 = chat.title; } else if (user != null) { nameString2 = ContactsController.formatName(user.first_name, user.last_name); } nameString = nameString2.replace("\n", " "); } if (nameString.length() == 0) { if (user != null && user.phone != null && user.phone.length() != 0) { nameString = PhoneFormat.getInstance().format("+" + user.phone); } else { nameString = LocaleController.getString("HiddenName", R.string.HiddenName); } } if (encryptedChat != null) { currentNamePaint = nameEncryptedPaint; } else { currentNamePaint = namePaint; } if (!LocaleController.isRTL) { onlineWidth = nameWidth = width - nameLeft - AndroidUtilities.dp(3 + (usePadding ? 11 : 0)); } else { onlineWidth = nameWidth = width - nameLeft - AndroidUtilities.dp(61 + (usePadding ? 11 : 0)); } if (drawNameLock) { nameWidth -= AndroidUtilities.dp(6) + lockDrawable.getIntrinsicWidth(); } else if (drawNameBroadcast) { nameWidth -= AndroidUtilities.dp(6) + broadcastDrawable.getIntrinsicWidth(); } CharSequence nameStringFinal = TextUtils.ellipsize( nameString, currentNamePaint, nameWidth - AndroidUtilities.dp(12), TextUtils.TruncateAt.END); nameLayout = new StaticLayout( nameStringFinal, currentNamePaint, nameWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); if (chat == null) { if (!LocaleController.isRTL) { onlineLeft = AndroidUtilities.dp(61 + (usePadding ? 11 : 0)); } else { onlineLeft = usePadding ? AndroidUtilities.dp(11) : 0; } CharSequence onlineString = ""; TextPaint currentOnlinePaint = offlinePaint; if (subLabel != null) { onlineString = subLabel; } else { onlineString = LocaleController.formatUserStatus(user); if (user != null && (user.id == UserConfig.getClientUserId() || user.status != null && user.status.expires > ConnectionsManager.getInstance().getCurrentTime())) { currentOnlinePaint = onlinePaint; onlineString = LocaleController.getString("Online", R.string.Online); } } CharSequence onlineStringFinal = TextUtils.ellipsize( onlineString, currentOnlinePaint, nameWidth - AndroidUtilities.dp(12), TextUtils.TruncateAt.END); onlineLayout = new StaticLayout( onlineStringFinal, currentOnlinePaint, nameWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); nameTop = AndroidUtilities.dp(12); } else { onlineLayout = null; nameTop = AndroidUtilities.dp(22); } if (!LocaleController.isRTL) { avatarLeft = usePadding ? AndroidUtilities.dp(11) : 0; } else { avatarLeft = width - AndroidUtilities.dp(50 + (usePadding ? 11 : 0)); } avatarImage.setImageCoords( avatarLeft, avatarTop, AndroidUtilities.dp(50), AndroidUtilities.dp(50)); double widthpx = 0; float left = 0; if (LocaleController.isRTL) { if (nameLayout.getLineCount() > 0) { left = nameLayout.getLineLeft(0); if (left == 0) { widthpx = Math.ceil(nameLayout.getLineWidth(0)); if (widthpx < nameWidth) { nameLeft += (nameWidth - widthpx); } } } if (onlineLayout != null && onlineLayout.getLineCount() > 0) { left = onlineLayout.getLineLeft(0); if (left == 0) { widthpx = Math.ceil(onlineLayout.getLineWidth(0)); if (widthpx < onlineWidth) { onlineLeft += (onlineWidth - widthpx); } } } } else { if (nameLayout.getLineCount() > 0) { left = nameLayout.getLineRight(0); if (left == nameWidth) { widthpx = Math.ceil(nameLayout.getLineWidth(0)); if (widthpx < nameWidth) { nameLeft -= (nameWidth - widthpx); } } } if (onlineLayout != null && onlineLayout.getLineCount() > 0) { left = onlineLayout.getLineRight(0); if (left == onlineWidth) { widthpx = Math.ceil(onlineLayout.getLineWidth(0)); if (widthpx < onlineWidth) { onlineLeft -= (onlineWidth - widthpx); } } } } }