This commit is contained in:
Mariotaku Lee 2016-01-26 19:56:25 +08:00
parent d443558495
commit 96a2fd46ff
5 changed files with 40 additions and 14 deletions

View File

@ -494,13 +494,18 @@ public class ComposeActivity extends ThemedFragmentActivity implements OnMenuIte
final float x = ev.getRawX(), y = ev.getRawY();
if (isAccountSelectorVisible()) {
if (!TwidereViewUtils.hitView(x, y, mAccountSelectorButton)) {
for (int i = 0, j = mAccountSelector.getChildCount(); i < j; i++) {
if (TwidereViewUtils.hitView(x, y, mAccountSelector.getChildAt(i))) {
boolean clickedItem = false;
final RecyclerView.LayoutManager layoutManager = mAccountSelector.getLayoutManager();
for (int i = 0, j = layoutManager.getChildCount(); i < j; i++) {
if (TwidereViewUtils.hitView(x, y, layoutManager.getChildAt(i))) {
clickedItem = true;
break;
}
}
setAccountSelectorVisible(false);
return true;
if (!clickedItem) {
setAccountSelectorVisible(false);
return true;
}
}
}
break;

View File

@ -464,6 +464,8 @@ public class SignInActivity extends BaseAppCompatActivity implements OnClickList
Toast.makeText(this, R.string.wrong_api_key, Toast.LENGTH_SHORT).show();
} else if (result.exception instanceof WrongUserPassException) {
Toast.makeText(this, R.string.wrong_username_password, Toast.LENGTH_SHORT).show();
} else if (result.exception instanceof SignInTask.WrongBasicCredentialException) {
Toast.makeText(this, R.string.wrong_username_password, Toast.LENGTH_SHORT).show();
} else if (result.exception instanceof LoginVerificationException) {
Toast.makeText(this, R.string.login_verification_failed, Toast.LENGTH_SHORT).show();
} else if (result.exception instanceof AuthenticationException) {
@ -730,17 +732,29 @@ public class SignInActivity extends BaseAppCompatActivity implements OnClickList
} catch (final AuthenticationException e) {
Log.w(LOGTAG, e);
return new SignInResponse(false, false, e);
} catch (final WrongBasicCredentialException e) {
Log.w(LOGTAG, e);
return new SignInResponse(false, false, e);
}
}
private SignInResponse authBasic() throws TwitterException {
private SignInResponse authBasic() throws TwitterException, WrongUserPassException,
WrongBasicCredentialException {
final SignInActivity activity = activityRef.get();
if (activity == null) return new SignInResponse(false, false, null);
final String versionSuffix = noVersionSuffix ? null : "1.1";
final Endpoint endpoint = new Endpoint(TwitterAPIFactory.getApiUrl(apiUrlFormat, "api", versionSuffix));
final Authorization auth = new BasicAuthorization(username, password);
final Twitter twitter = TwitterAPIFactory.getInstance(activity, endpoint, auth, Twitter.class);
final User user = twitter.verifyCredentials();
User user = null;
try {
user = twitter.verifyCredentials();
} catch (TwitterException e) {
if (e.getStatusCode() == 401) {
throw new WrongBasicCredentialException();
}
}
if (user == null) throw new NullPointerException();
final long userId = user.getId();
if (userId <= 0) return new SignInResponse(false, false, null);
if (isUserLoggedIn(activity, userId)) return new SignInResponse(true, false, null);
@ -749,6 +763,10 @@ public class SignInActivity extends BaseAppCompatActivity implements OnClickList
color, apiUrlFormat, noVersionSuffix);
}
static class WrongBasicCredentialException extends Exception {
}
private SignInResponse authOAuth() throws AuthenticationException, TwitterException {
final SignInActivity activity = activityRef.get();
if (activity == null) return new SignInResponse(false, false, null);

View File

@ -44,7 +44,6 @@ import android.nfc.NfcAdapter.CreateNdefMessageCallback;
import android.nfc.NfcEvent;
import android.os.Build;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
@ -122,13 +121,13 @@ import org.mariotaku.twidere.util.HtmlSpanBuilder;
import org.mariotaku.twidere.util.KeyboardShortcutsHandler;
import org.mariotaku.twidere.util.KeyboardShortcutsHandler.KeyboardShortcutCallback;
import org.mariotaku.twidere.util.LinkCreator;
import org.mariotaku.twidere.util.TwidereMathUtils;
import org.mariotaku.twidere.util.MenuUtils;
import org.mariotaku.twidere.util.ParseUtils;
import org.mariotaku.twidere.util.ThemeUtils;
import org.mariotaku.twidere.util.TwidereColorUtils;
import org.mariotaku.twidere.util.TwidereLinkify;
import org.mariotaku.twidere.util.TwidereLinkify.OnLinkClickListener;
import org.mariotaku.twidere.util.TwidereMathUtils;
import org.mariotaku.twidere.util.TwitterAPIFactory;
import org.mariotaku.twidere.util.Utils;
import org.mariotaku.twidere.util.menu.TwidereMenuInfo;
@ -526,8 +525,10 @@ public class UserFragment extends BaseSupportFragment implements OnClickListener
mMediaLoader.displayProfileImage(mProfileImageView, Utils.getOriginalTwitterProfileImage(user.profile_image_url));
if (userColor != 0) {
setUiColor(userColor);
} else {
} else if (user.link_color != 0) {
setUiColor(user.link_color);
} else if (activity instanceof IThemedActivity) {
setUiColor(((IThemedActivity) activity).getCurrentThemeColor());
}
final int defWidth = resources.getDisplayMetrics().widthPixels;
final int width = mBannerWidth > 0 ? mBannerWidth : defWidth;

View File

@ -20,6 +20,7 @@
package org.mariotaku.twidere.util;
import android.support.annotation.IntDef;
import android.support.annotation.Nullable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
@ -106,22 +107,23 @@ public final class TwidereLinkify implements Constants {
setHighlightOption(highlightOption);
}
public SpannableString applyAllLinks(CharSequence text, final long accountId, final long extraId, final boolean sensitive) {
public SpannableString applyAllLinks(@Nullable CharSequence text, final long accountId, final long extraId, final boolean sensitive) {
return applyAllLinks(text, mOnLinkClickListener, accountId, extraId, sensitive, mHighlightOption);
}
public SpannableString applyAllLinks(CharSequence text, final long accountId, final boolean sensitive) {
public SpannableString applyAllLinks(@Nullable CharSequence text, final long accountId, final boolean sensitive) {
return applyAllLinks(text, mOnLinkClickListener, accountId, -1, sensitive, mHighlightOption);
}
public SpannableString applyAllLinks(CharSequence text, final long accountId, final long extraId,
public SpannableString applyAllLinks(@Nullable CharSequence text, final long accountId, final long extraId,
final boolean sensitive, final int highlightOption) {
return applyAllLinks(text, mOnLinkClickListener, accountId, extraId, sensitive, highlightOption);
}
public SpannableString applyAllLinks(final CharSequence text, final OnLinkClickListener listener,
public SpannableString applyAllLinks(@Nullable final CharSequence text, final OnLinkClickListener listener,
final long accountId, final long extraId, final boolean sensitive,
final int highlightOption) {
if (text == null) return null;
final SpannableString string = SpannableString.valueOf(text);
for (final int type : ALL_LINK_TYPES) {
addLinks(string, accountId, extraId, type, sensitive, listener, highlightOption);

View File

@ -12,6 +12,6 @@ public class TwidereViewUtils {
int[] location = new int[2];
view.getLocationOnScreen(location);
return TwidereMathUtils.inRange(x, location[0], location[0] + view.getWidth(), TwidereMathUtils.RANGE_INCLUSIVE_INCLUSIVE) &&
TwidereMathUtils.inRange(x, location[1], location[1] + view.getHeight(), TwidereMathUtils.RANGE_INCLUSIVE_INCLUSIVE);
TwidereMathUtils.inRange(y, location[1], location[1] + view.getHeight(), TwidereMathUtils.RANGE_INCLUSIVE_INCLUSIVE);
}
}