diff options
Diffstat (limited to 'app/src/main/java/app/fedilab/android/drawers')
26 files changed, 258 insertions, 149 deletions
diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountLiveAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountLiveAdapter.java index ae5f6f49d..2aab38acd 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountLiveAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountLiveAdapter.java @@ -40,7 +40,7 @@ import static android.content.Context.MODE_PRIVATE; * Created by Thomas on 03/10/2019 * Adapter for accounts and live notifications */ -public class AccountLiveAdapter extends RecyclerView.Adapter { +public class AccountLiveAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<Account> accounts; diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountSearchDevAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountSearchDevAdapter.java index ec285f185..23973c0ed 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountSearchDevAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountSearchDevAdapter.java @@ -47,6 +47,8 @@ import app.fedilab.android.helper.Helper; import app.fedilab.android.interfaces.OnPostActionInterface; import es.dmoral.toasty.Toasty; +import static app.fedilab.android.helper.Helper.makeEmojis; + /** * Created by Thomas on 03/09/2017. @@ -125,6 +127,7 @@ public class AccountSearchDevAdapter extends BaseAdapter implements OnPostAction } } else { holder.account_dn.setText(account.getDisplay_name()); + makeEmojis(context, holder.account_dn, account.getDisplayNameSpan(), account.getEmojis()); holder.account_un.setText(account.getAcct()); holder.account_follow.hide(); } diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java index 8e9ac1926..510ed1281 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java @@ -36,12 +36,14 @@ import app.fedilab.android.client.Entities.AccountAdmin; import app.fedilab.android.helper.Helper; import app.fedilab.android.interfaces.OnRetrieveEmojiAccountInterface; +import static app.fedilab.android.helper.Helper.makeEmojis; + /** * Created by Thomas on 19/06/2019. * Adapter for account admins */ -public class AccountsAdminListAdapter extends RecyclerView.Adapter implements OnRetrieveEmojiAccountInterface { +public class AccountsAdminListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements OnRetrieveEmojiAccountInterface { private List<AccountAdmin> accountAdmins; private Context context; @@ -74,8 +76,11 @@ public class AccountsAdminListAdapter extends RecyclerView.Adapter implements On else if (account.getDisplay_name() != null) { holder.account_dn.setText(account.getDisplay_name().replace("@", "")); } - } else + } else { holder.account_dn.setText(account.getDisplayNameSpan(), TextView.BufferType.SPANNABLE); + makeEmojis(context, holder.account_dn, account.getDisplayNameSpan(), account.getEmojis()); + } + if (account.getDisplayNameSpan() == null || account.getDisplayNameSpan().toString().trim().equals("")) { if (account.getDisplay_name() != null && !account.getDisplay_name().trim().equals("")) diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountsFollowRequestAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountsFollowRequestAdapter.java index 28248f1f7..c4d5737e5 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountsFollowRequestAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountsFollowRequestAdapter.java @@ -50,12 +50,14 @@ import app.fedilab.android.helper.Helper; import app.fedilab.android.interfaces.OnPostActionInterface; import es.dmoral.toasty.Toasty; +import static app.fedilab.android.helper.Helper.makeEmojis; + /** * Created by Thomas on 07/05/2017. * Adapter for accounts asking a follow request */ -public class AccountsFollowRequestAdapter extends RecyclerView.Adapter implements OnPostActionInterface { +public class AccountsFollowRequestAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements OnPostActionInterface { private List<Account> accounts; private Context context; @@ -88,6 +90,7 @@ public class AccountsFollowRequestAdapter extends RecyclerView.Adapter implement holder.btn_reject.setVisibility(View.GONE); } holder.account_dn.setText(account.getDisplay_name()); + makeEmojis(context, holder.account_dn, account.getDisplayNameSpan(), account.getEmojis()); holder.account_un.setText(account.getAcct()); //Profile picture Glide.with(holder.account_pp.getContext()) diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountsInAListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountsInAListAdapter.java index eb1edc97a..7318aff0f 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountsInAListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountsInAListAdapter.java @@ -45,12 +45,14 @@ import app.fedilab.android.helper.Helper; import app.fedilab.android.interfaces.OnListActionInterface; import es.dmoral.toasty.Toasty; +import static app.fedilab.android.helper.Helper.makeEmojis; + /** * Created by Thomas on 15/12/2017. * Adapter for accounts in lists */ -public class AccountsInAListAdapter extends RecyclerView.Adapter implements OnListActionInterface { +public class AccountsInAListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements OnListActionInterface { private List<Account> accounts; private Context context; @@ -90,6 +92,7 @@ public class AccountsInAListAdapter extends RecyclerView.Adapter implements OnLi holder.account_un.setText(account.getDisplay_name()); + makeEmojis(context, holder.account_un, account.getDisplayNameSpan(), account.getEmojis()); holder.account_ac.setText(account.getAcct()); if (account.getDisplay_name().equals(account.getAcct())) holder.account_ac.setVisibility(View.GONE); diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountsListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountsListAdapter.java index 3cac8a987..8d2f1fc7c 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountsListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountsListAdapter.java @@ -60,24 +60,38 @@ import app.fedilab.android.sqlite.InstancesDAO; import app.fedilab.android.sqlite.Sqlite; import es.dmoral.toasty.Toasty; +import static app.fedilab.android.helper.Helper.makeEmojis; + /** * Created by Thomas on 27/04/2017. * Adapter for accounts */ -public class AccountsListAdapter extends RecyclerView.Adapter implements OnPostActionInterface, OnRetrieveEmojiAccountInterface { +public class AccountsListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements OnPostActionInterface, OnRetrieveEmojiAccountInterface { private List<Account> accounts; private RetrieveAccountsAsyncTask.Type action; private Context context; private AccountsListAdapter accountsListAdapter; private String targetedId; + private boolean crossAction; + + + public AccountsListAdapter(RetrieveAccountsAsyncTask.Type action, String targetedId, boolean crossAction, List<Account> accounts) { + this.accounts = accounts; + this.action = action; + this.accountsListAdapter = this; + this.targetedId = targetedId; + this.crossAction = crossAction; + } + public AccountsListAdapter(RetrieveAccountsAsyncTask.Type action, String targetedId, List<Account> accounts) { this.accounts = accounts; this.action = action; this.accountsListAdapter = this; this.targetedId = targetedId; + crossAction = false; } @@ -172,8 +186,10 @@ public class AccountsListAdapter extends RecyclerView.Adapter implements OnPostA holder.account_dn.setText(account.getDisplay_name()); else holder.account_dn.setText(account.getUsername().replace("@", "")); - } else + } else { holder.account_dn.setText(account.getDisplayNameSpan(), TextView.BufferType.SPANNABLE); + makeEmojis(context, holder.account_dn, account.getDisplayNameSpan(), account.getEmojis()); + } holder.account_un.setText(String.format("@%s", account.getUsername())); holder.account_ac.setText(account.getAcct()); if (account.getUsername().equals(account.getAcct())) @@ -239,7 +255,7 @@ public class AccountsListAdapter extends RecyclerView.Adapter implements OnPostA }); if (action != RetrieveAccountsAsyncTask.Type.GROUPS) { holder.account_pp.setOnClickListener(v -> { - if (MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE || action != RetrieveAccountsAsyncTask.Type.CHANNELS) { + if (!crossAction && (MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE || action != RetrieveAccountsAsyncTask.Type.CHANNELS)) { //Avoid to reopen details about the current account if (targetedId == null || !targetedId.equals(account.getId())) { Intent intent = new Intent(context, ShowAccountActivity.class); diff --git a/app/src/main/java/app/fedilab/android/drawers/ArtListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/ArtListAdapter.java index 859b8b011..d67220e07 100644 --- a/app/src/main/java/app/fedilab/android/drawers/ArtListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/ArtListAdapter.java @@ -15,6 +15,7 @@ package app.fedilab.android.drawers; * see <http://www.gnu.org/licenses>. */ import android.annotation.SuppressLint; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -30,6 +31,7 @@ import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.core.app.ActivityOptionsCompat; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; @@ -58,13 +60,14 @@ import app.fedilab.android.sqlite.StatusCacheDAO; import es.dmoral.toasty.Toasty; import static android.content.Context.MODE_PRIVATE; +import static app.fedilab.android.helper.Helper.makeEmojis; /** * Created by Thomas on 14/01/2019. * Adapter for art drawer */ -public class ArtListAdapter extends RecyclerView.Adapter implements OnPostActionInterface, OnRetrieveEmojiInterface, OnRetrieveRepliesInterface { +public class ArtListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements OnPostActionInterface, OnRetrieveEmojiInterface, OnRetrieveRepliesInterface { private static final int DISPLAYED_STATUS = 1; private final int HIDDEN_STATUS = 0; @@ -176,7 +179,16 @@ public class ArtListAdapter extends RecyclerView.Adapter implements OnPostAction b.putInt("bgcolor", context.getResources().getColor(R.color.cyanea_primary_dark)); b.putInt("position", 1); intent.putExtras(b); - context.startActivity(intent); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { + ActivityOptionsCompat options = ActivityOptionsCompat + .makeSceneTransitionAnimation((Activity) context, holder.art_media, status.getMedia_attachments().get(0).getUrl()); + // start the new activity + context.startActivity(intent, options.toBundle()); + } else { + // start the new activity + context.startActivity(intent); + } + }); holder.art_author.setOnClickListener(v -> { Intent intent = new Intent(context, ShowConversationActivity.class); @@ -186,9 +198,10 @@ public class ArtListAdapter extends RecyclerView.Adapter implements OnPostAction context.startActivity(intent); }); - if (status.getAccount().getDisplayNameSpan() != null && status.getAccount().getDisplayNameSpan().toString().trim().length() > 0) + if (status.getAccount().getDisplayNameSpan() != null && status.getAccount().getDisplayNameSpan().toString().trim().length() > 0) { holder.art_username.setText(status.getAccount().getDisplayNameSpan(), TextView.BufferType.SPANNABLE); - else + makeEmojis(context, holder.art_username, status.getAccount().getDisplayNameSpan(), status.getAccount().getEmojis()); + } else holder.art_username.setText(status.getAccount().getUsername()); holder.art_acct.setText(String.format("@%s", status.getAccount().getAcct())); diff --git a/app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java b/app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java index 18728988f..a8ddbf85a 100644 --- a/app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java @@ -88,7 +88,9 @@ public class CustomEmojiAdapter extends BaseAdapter { @Override public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) { emoji.setDrawable(resource); - imageView.setImageDrawable(emoji.getDrawable()); + if (imageView != null && emoji.getDrawable() != null) { + imageView.setImageDrawable(emoji.getDrawable()); + } } @Override diff --git a/app/src/main/java/app/fedilab/android/drawers/DomainsListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/DomainsListAdapter.java index c58308531..f2c9861e8 100644 --- a/app/src/main/java/app/fedilab/android/drawers/DomainsListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/DomainsListAdapter.java @@ -43,7 +43,7 @@ import es.dmoral.toasty.Toasty; * Created by Thomas on 26/09/2018. * Adapter for domains */ -public class DomainsListAdapter extends RecyclerView.Adapter implements OnRetrieveDomainsInterface { +public class DomainsListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements OnRetrieveDomainsInterface { private List<String> domains; private Context context; diff --git a/app/src/main/java/app/fedilab/android/drawers/IdentityProofsAdapter.java b/app/src/main/java/app/fedilab/android/drawers/IdentityProofsAdapter.java index b5c796339..ba0e32f4f 100644 --- a/app/src/main/java/app/fedilab/android/drawers/IdentityProofsAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/IdentityProofsAdapter.java @@ -35,7 +35,7 @@ import app.fedilab.android.helper.Helper; * Created by Thomas on 19/12/2019. * Adapter for identity proofs */ -public class IdentityProofsAdapter extends RecyclerView.Adapter { +public class IdentityProofsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<IdentityProof> identityProofs; diff --git a/app/src/main/java/app/fedilab/android/drawers/ImageAdapter.java b/app/src/main/java/app/fedilab/android/drawers/ImageAdapter.java index 8c4b76b14..d119962c5 100644 --- a/app/src/main/java/app/fedilab/android/drawers/ImageAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/ImageAdapter.java @@ -14,6 +14,7 @@ package app.fedilab.android.drawers; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see <http://www.gnu.org/licenses>. */ +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; @@ -23,6 +24,7 @@ import android.view.ViewGroup; import android.widget.ImageView; import androidx.annotation.NonNull; +import androidx.core.app.ActivityOptionsCompat; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; @@ -43,7 +45,7 @@ import app.fedilab.android.client.Entities.Status; * Adapter to display media related to status */ -public class ImageAdapter extends RecyclerView.Adapter { +public class ImageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<Status> statuses; @@ -86,7 +88,15 @@ public class ImageAdapter extends RecyclerView.Adapter { b.putInt("position", (viewHolder.getAdapterPosition() + 1)); b.putInt("bgcolor", context.getResources().getColor(R.color.cyanea_primary_dark)); intent.putExtras(b); - context.startActivity(intent); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { + ActivityOptionsCompat options = ActivityOptionsCompat + .makeSceneTransitionAnimation((Activity) context, holder.imageView, attachmentsTmp.get((viewHolder.getAdapterPosition())).getUrl()); + // start the new activity + context.startActivity(intent, options.toBundle()); + } else { + // start the new activity + context.startActivity(intent); + } }); holder.imageView.setOnLongClickListener(v -> { Intent intent = new Intent(context, ShowConversationActivity.class); diff --git a/app/src/main/java/app/fedilab/android/drawers/InstancePeertubeRegAdapter.java b/app/src/main/java/app/fedilab/android/drawers/InstancePeertubeRegAdapter.java index 26c877a7e..8a31854ca 100644 --- a/app/src/main/java/app/fedilab/android/drawers/InstancePeertubeRegAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/InstancePeertubeRegAdapter.java @@ -37,7 +37,7 @@ import app.fedilab.android.helper.Helper; * Adapter to display instances */ -public class InstancePeertubeRegAdapter extends RecyclerView.Adapter { +public class InstancePeertubeRegAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<InstanceReg> instanceRegs; private LayoutInflater layoutInflater; diff --git a/app/src/main/java/app/fedilab/android/drawers/InstanceRegAdapter.java b/app/src/main/java/app/fedilab/android/drawers/InstanceRegAdapter.java index 119ec3ed6..9763fd30e 100644 --- a/app/src/main/java/app/fedilab/android/drawers/InstanceRegAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/InstanceRegAdapter.java @@ -43,7 +43,7 @@ import app.fedilab.android.helper.Helper; * Adapter to display instances */ -public class InstanceRegAdapter extends RecyclerView.Adapter { +public class InstanceRegAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<InstanceReg> instanceRegs; private LayoutInflater layoutInflater; diff --git a/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java index e1d77bce0..c3ed7f300 100644 --- a/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java @@ -30,7 +30,10 @@ import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; import android.text.Html; +import android.text.SpannableString; +import android.text.Spanned; import android.text.method.LinkMovementMethod; +import android.text.style.ForegroundColorSpan; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -53,6 +56,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.core.app.ActivityOptionsCompat; import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.preference.PreferenceManager; @@ -70,6 +74,8 @@ import java.util.List; import java.util.Objects; import java.util.Timer; import java.util.TimerTask; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import app.fedilab.android.R; import app.fedilab.android.activities.AccountReportActivity; @@ -111,6 +117,7 @@ import es.dmoral.toasty.Toasty; import static android.content.Context.MODE_PRIVATE; import static app.fedilab.android.activities.BaseMainActivity.social; +import static app.fedilab.android.helper.Helper.makeEmojis; /** @@ -118,7 +125,7 @@ import static app.fedilab.android.activities.BaseMainActivity.social; * Adapter for Status */ -public class NotificationsListAdapter extends RecyclerView.Adapter implements OnPostActionInterface, OnPostNotificationsActionInterface, OnRetrieveEmojiInterface, OnRetrieveEmojiAccountInterface, OnPollInterface, OnRetrieveImageInterface { +public class NotificationsListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements OnPostActionInterface, OnPostNotificationsActionInterface, OnRetrieveEmojiInterface, OnRetrieveEmojiAccountInterface, OnPollInterface, OnRetrieveImageInterface { private final Object lock = new Object(); private Context context; @@ -261,7 +268,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On else typeString = String.format("@%s %s", notification.getAccount().getUsername(), context.getString(R.string.notif_mention)); imgH = ContextCompat.getDrawable(context, R.drawable.ic_chat_bubble_outline); - if (notification.getStatus().getVisibility().equals("direct")) { + if (notification.getStatus() != null && notification.getStatus().getVisibility().equals("direct")) { holder.main_container_trans.setVisibility(View.GONE); } else { holder.main_container_trans.setVisibility(View.VISIBLE); @@ -322,8 +329,10 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On if (notification.getAccount().getDisplayNameSpan() == null) { holder.notification_type.setText(typeString); notification.getAccount().setStored_displayname(notification.getAccount().getDisplay_name()); - } else - holder.notification_type.setText(notification.getAccount().getDisplayNameSpan(), TextView.BufferType.SPANNABLE); + } else { + holder.notification_type.setText(typeString, TextView.BufferType.SPANNABLE); + makeEmojis(context, holder.notification_type, notification.getAccount().getDisplayNameSpan(), notification.getAccount().getEmojis()); + } if (imgH != null) { DrawableCompat.setTint(imgH, ContextCompat.getColor(context, R.color.cyanea_accent)); @@ -376,6 +385,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On holder.status_privacy.setContentDescription(context.getString(R.string.toot_visibility_tilte) + ": " + v); }); holder.notification_status_content.setText(status.getContentSpan(), TextView.BufferType.SPANNABLE); + makeEmojis(context, holder.notification_status_content, status.getContentSpan(), status.getEmojis()); holder.status_spoiler.setText(status.getContentSpanCW(), TextView.BufferType.SPANNABLE); holder.status_spoiler.setMovementMethod(LinkMovementMethod.getInstance()); holder.notification_status_content.setMovementMethod(LinkMovementMethod.getInstance()); @@ -539,8 +549,9 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On TextView poll_item_percent = item.findViewById(R.id.poll_item_percent); TextView poll_item_text = item.findViewById(R.id.poll_item_text); ProgressBar poll_item_value = item.findViewById(R.id.poll_item_value); - poll_item_percent.setText(String.format("%s %%", String.valueOf((int) value))); + poll_item_percent.setText(String.format("%s %%", (int) value)); poll_item_text.setText(pollOption.getTitle(), TextView.BufferType.SPANNABLE); + makeEmojis(context, poll_item_text, pollOption.getTitleSpan(), poll.getEmojis()); poll_item_value.setProgress((int) value); holder.rated.addView(item); if (pollOption.getVotes_count() == greaterValue) { @@ -564,6 +575,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On for (PollOptions pollOption : poll.getOptionsList()) { CheckBox cb = new CheckBox(context); cb.setText(pollOption.getTitle()); + makeEmojis(context, cb, pollOption.getTitleSpan(), poll.getEmojis()); holder.multiple_choice.addView(cb); } holder.multiple_choice.setVisibility(View.VISIBLE); @@ -573,6 +585,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On for (PollOptions pollOption : poll.getOptionsList()) { RadioButton rb = new RadioButton(context); rb.setText(pollOption.getTitle()); + makeEmojis(context, rb, pollOption.getTitleSpan(), poll.getEmojis()); holder.radio_group.addView(rb); } holder.single_choice.setVisibility(View.VISIBLE); @@ -742,7 +755,27 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On holder.notification_delete.setOnClickListener(v -> displayConfirmationNotificationDialog(notification)); - holder.notification_account_username.setVisibility(View.GONE); + + + if (notification.getAccount() != null) { + SpannableString wordtoSpan = new SpannableString("@" + notification.getAccount().getAcct()); + Pattern hashAcct = Pattern.compile("(@" + notification.getAccount().getAcct() + ")"); + + int theme_text_header_2_line = prefs.getInt("theme_text_header_2_line", -1); + if (theme_text_header_2_line == -1) { + theme_text_header_2_line = ThemeHelper.getAttColor(context, R.attr.textHeader); + } + Matcher matcherAcct = hashAcct.matcher(wordtoSpan); + while (matcherAcct.find()) { + int matchStart = matcherAcct.start(1); + int matchEnd = matcherAcct.end(); + if (wordtoSpan.length() >= matchEnd && matchStart < matchEnd) { + wordtoSpan.setSpan(new ForegroundColorSpan(theme_text_header_2_line), matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + } + + } + holder.notification_account_username.setText(wordtoSpan); + } final String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); final View attached = holder.status_more; @@ -1046,13 +1079,12 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On * @param notification Notification */ private void displayConfirmationNotificationDialog(final Notification notification) { - final ArrayList seletedItems = new ArrayList(); + final ArrayList<Integer> seletedItems = new ArrayList<>(); AlertDialog dialog = new AlertDialog.Builder(context, style) .setTitle(R.string.delete_notification_ask) .setMultiChoiceItems(new String[]{context.getString(R.string.delete_notification_ask_all)}, null, (dialog1, indexSelected, isChecked) -> { if (isChecked) { - //noinspection unchecked seletedItems.add(indexSelected); } else { if (seletedItems.contains(indexSelected)) @@ -1186,7 +1218,15 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On b.putInt("position", finalPosition); b.putInt("bgcolor", context.getResources().getColor(R.color.cyanea_primary_dark)); intent.putExtras(b); - context.startActivity(intent); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { + ActivityOptionsCompat options = ActivityOptionsCompat + .makeSceneTransitionAnimation((Activity) context, imageView, notification.getStatus().getMedia_attachments().get(finalPosition - 1).getUrl()); + // start the new activity + context.startActivity(intent, options.toBundle()); + } else { + // start the new activity + context.startActivity(intent); + } }); i++; position++; |