summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/app/fedilab/android/drawers
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/app/fedilab/android/drawers')
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/AccountLiveAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/AccountSearchDevAdapter.java3
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java9
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/AccountsFollowRequestAdapter.java5
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/AccountsInAListAdapter.java5
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/AccountsListAdapter.java22
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/ArtListAdapter.java21
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/CustomEmojiAdapter.java4
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/DomainsListAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/IdentityProofsAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/ImageAdapter.java14
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/InstancePeertubeRegAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/InstanceRegAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java58
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/PeertubeAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/PeertubeNotificationsListAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java22
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/PixelfedStoriesListAdapter.java13
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/ReactionAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/ReportsListAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/ScheduledTootsListAdapter.java31
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/SliderAdapter.java13
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java163
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/SuggestionsAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/TagsEditAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/drawers/TrendsAdapter.java2
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++;
diff --git a/app/src/main/java/app/fedilab/android/drawers/PeertubeAdapter.java b/app/src/main/java/app/fedilab/android/drawers/PeertubeAdapter.java
index 19d621394..58c218771 100644
--- a/