/* * Twidere - Twitter client for Android * * Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.getlantern.firetweet.text; import android.support.annotation.NonNull; import android.text.TextPaint; import android.text.style.URLSpan; import android.view.View; import org.getlantern.firetweet.Constants; import org.getlantern.firetweet.util.TwidereLinkify.OnLinkClickListener; public class TwidereURLSpan extends URLSpan implements Constants { private final int type, highlightStyle; private final long accountId; private final long extraId; private final String url, orig; private final boolean sensitive; private final OnLinkClickListener listener; private final int start, end; public TwidereURLSpan(final String url, final String orig, final long accountId, final long extraId, final int type, final boolean sensitive, final int highlightStyle, int start, int end, final OnLinkClickListener listener) { super(url); this.url = url; this.orig = orig; this.accountId = accountId; this.extraId = extraId; this.type = type; this.sensitive = sensitive; this.highlightStyle = highlightStyle; this.start = start; this.end = end; this.listener = listener; } @Override public void onClick(@NonNull final View widget) { if (listener != null) { listener.onLinkClick(url, orig, accountId, extraId, type, sensitive, start, end); } } @Override public void updateDrawState(@NonNull final TextPaint ds) { if ((highlightStyle & VALUE_LINK_HIGHLIGHT_OPTION_CODE_UNDERLINE) != 0) { ds.setUnderlineText(true); } if ((highlightStyle & VALUE_LINK_HIGHLIGHT_OPTION_CODE_HIGHLIGHT) != 0) { ds.setColor(ds.linkColor); } } }