improved quick search bar - open user profile of screen name you typed directly, no need to open search screen
added user-friendly error page for protected users
This commit is contained in:
parent
0c1bbaa04a
commit
7b10cb3372
|
@ -417,6 +417,10 @@ public class QuickSearchBarActivity extends ThemedFragmentActivity implements On
|
||||||
return ITEM_VIEW_TYPE;
|
return ITEM_VIEW_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ParcelableUser getUser() {
|
||||||
|
return mUser;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemClick(QuickSearchBarActivity activity, int position) {
|
public void onItemClick(QuickSearchBarActivity activity, int position) {
|
||||||
Utils.openUserProfile(activity, mUser, null);
|
Utils.openUserProfile(activity, mUser, null);
|
||||||
|
@ -440,12 +444,53 @@ public class QuickSearchBarActivity extends ThemedFragmentActivity implements On
|
||||||
final String nick = getUserNickname(context, user.id);
|
final String nick = getUserNickname(context, user.id);
|
||||||
text1.setText(TextUtils.isEmpty(nick) ? user.name : adapter.isNicknameOnly() ? nick :
|
text1.setText(TextUtils.isEmpty(nick) ? user.name : adapter.isNicknameOnly() ? nick :
|
||||||
context.getString(R.string.name_with_nickname, user.name, nick));
|
context.getString(R.string.name_with_nickname, user.name, nick));
|
||||||
|
text2.setVisibility(View.VISIBLE);
|
||||||
text2.setText("@" + user.screen_name);
|
text2.setText("@" + user.screen_name);
|
||||||
|
icon.clearColorFilter();
|
||||||
loader.displayProfileImage(icon, user.profile_image_url);
|
loader.displayProfileImage(icon, user.profile_image_url);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class UserScreenNameItem extends BaseClickableItem {
|
||||||
|
|
||||||
|
static final int ITEM_VIEW_TYPE = 3;
|
||||||
|
private final String mScreenName;
|
||||||
|
private final long mAccountId;
|
||||||
|
|
||||||
|
public UserScreenNameItem(String screenName, long accountId) {
|
||||||
|
mScreenName = screenName;
|
||||||
|
mAccountId = accountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemViewType() {
|
||||||
|
return ITEM_VIEW_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onItemClick(QuickSearchBarActivity activity, int position) {
|
||||||
|
Utils.openUserProfile(activity, mAccountId, -1, mScreenName, null);
|
||||||
|
activity.finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final int getItemLayoutResource() {
|
||||||
|
return R.layout.list_item_suggestion_user;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void bindView(SuggestionsAdapter adapter, View view, int position) {
|
||||||
|
final ImageLoaderWrapper loader = adapter.getImageLoader();
|
||||||
|
final ImageView icon = (ImageView) view.findViewById(android.R.id.icon);
|
||||||
|
final TextView text1 = (TextView) view.findViewById(android.R.id.text1);
|
||||||
|
final TextView text2 = (TextView) view.findViewById(android.R.id.text2);
|
||||||
|
text1.setText('@' + mScreenName);
|
||||||
|
text2.setVisibility(View.GONE);
|
||||||
|
icon.setColorFilter(text1.getCurrentTextColor(), Mode.SRC_ATOP);
|
||||||
|
loader.cancelDisplayTask(icon);
|
||||||
|
icon.setImageResource(R.drawable.ic_action_user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static class SuggestionsAdapter extends BaseAdapter {
|
public static class SuggestionsAdapter extends BaseAdapter {
|
||||||
|
|
||||||
|
@ -581,9 +626,19 @@ public class QuickSearchBarActivity extends ThemedFragmentActivity implements On
|
||||||
CachedUsers.COLUMNS, selection != null ? selection.getSQL() : null,
|
CachedUsers.COLUMNS, selection != null ? selection.getSQL() : null,
|
||||||
selectionArgs, orderBy.getSQL());
|
selectionArgs, orderBy.getSQL());
|
||||||
final CachedIndices usersIndices = new CachedIndices(usersCursor);
|
final CachedIndices usersIndices = new CachedIndices(usersCursor);
|
||||||
|
final int screenNamePos = result.size();
|
||||||
|
boolean hasName = false;
|
||||||
for (int i = 0, j = Math.min(5, usersCursor.getCount()); i < j; i++) {
|
for (int i = 0, j = Math.min(5, usersCursor.getCount()); i < j; i++) {
|
||||||
usersCursor.moveToPosition(i);
|
usersCursor.moveToPosition(i);
|
||||||
result.add(new UserSuggestionItem(usersCursor, usersIndices, mAccountId));
|
final UserSuggestionItem userSuggestionItem = new UserSuggestionItem(usersCursor, usersIndices, mAccountId);
|
||||||
|
final ParcelableUser user = userSuggestionItem.getUser();
|
||||||
|
result.add(userSuggestionItem);
|
||||||
|
if (user.screen_name.equalsIgnoreCase(mQuery)) {
|
||||||
|
hasName = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!hasName) {
|
||||||
|
result.add(screenNamePos, new UserScreenNameItem(mQuery, mAccountId));
|
||||||
}
|
}
|
||||||
usersCursor.close();
|
usersCursor.close();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -338,6 +338,13 @@ public class UserFragment extends BaseSupportFragment implements OnClickListener
|
||||||
mPagesErrorContainer.setVisibility(View.VISIBLE);
|
mPagesErrorContainer.setVisibility(View.VISIBLE);
|
||||||
final String displayName = UserColorNameUtils.getDisplayName(getActivity(), user);
|
final String displayName = UserColorNameUtils.getDisplayName(getActivity(), user);
|
||||||
mPagesErrorText.setText(getString(R.string.blocked_by_user_summary, displayName));
|
mPagesErrorText.setText(getString(R.string.blocked_by_user_summary, displayName));
|
||||||
|
mPagesErrorIcon.setImageResource(R.drawable.ic_info_error_generic);
|
||||||
|
mPagesContent.setVisibility(View.GONE);
|
||||||
|
} else if (!relationship.isSourceFollowingTarget()) {
|
||||||
|
mPagesErrorContainer.setVisibility(View.VISIBLE);
|
||||||
|
final String displayName = UserColorNameUtils.getDisplayName(getActivity(), user);
|
||||||
|
mPagesErrorText.setText(getString(R.string.user_protected_summary, displayName));
|
||||||
|
mPagesErrorIcon.setImageResource(R.drawable.ic_info_locked);
|
||||||
mPagesContent.setVisibility(View.GONE);
|
mPagesContent.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
mPagesErrorContainer.setVisibility(View.GONE);
|
mPagesErrorContainer.setVisibility(View.GONE);
|
||||||
|
@ -1147,6 +1154,7 @@ public class UserFragment extends BaseSupportFragment implements OnClickListener
|
||||||
mUuckyFooter = headerView.findViewById(R.id.uucky_footer);
|
mUuckyFooter = headerView.findViewById(R.id.uucky_footer);
|
||||||
mPagesContent = view.findViewById(R.id.pages_content);
|
mPagesContent = view.findViewById(R.id.pages_content);
|
||||||
mPagesErrorContainer = view.findViewById(R.id.pages_error_container);
|
mPagesErrorContainer = view.findViewById(R.id.pages_error_container);
|
||||||
|
mPagesErrorIcon = (ImageView) view.findViewById(R.id.pages_error_icon);
|
||||||
mPagesErrorText = (TextView) view.findViewById(R.id.pages_error_text);
|
mPagesErrorText = (TextView) view.findViewById(R.id.pages_error_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 781 B |
Binary file not shown.
After Width: | Height: | Size: 2.0 KiB |
Binary file not shown.
After Width: | Height: | Size: 3.2 KiB |
|
@ -58,6 +58,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
android:padding="@dimen/element_spacing_large"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
|
|
||||||
|
|
|
@ -732,5 +732,6 @@
|
||||||
<string name="import_export_settings">Import/Export settings</string>
|
<string name="import_export_settings">Import/Export settings</string>
|
||||||
<string name="usage_statistics_header_summary">Twidere took part in some research project, join these projects will make Twidere and some other application better.</string>
|
<string name="usage_statistics_header_summary">Twidere took part in some research project, join these projects will make Twidere and some other application better.</string>
|
||||||
<string name="no_tab">No tab</string>
|
<string name="no_tab">No tab</string>
|
||||||
|
<string name="user_protected_summary">You need to send follow request to this protected user to see tweets</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
Loading…
Reference in New Issue