Loading app/src/main/java/app/fedilab/android/activities/ProfileActivity.java +4 −38 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.text.Html; import android.text.Spannable; import android.text.SpannableString; import android.text.Spanned; import android.text.method.LinkMovementMethod; Loading Loading @@ -94,6 +93,7 @@ import app.fedilab.android.helper.Helper; import app.fedilab.android.helper.MastodonHelper; import app.fedilab.android.helper.SpannableHelper; import app.fedilab.android.helper.ThemeHelper; import app.fedilab.android.ui.drawer.FieldAdapter; import app.fedilab.android.ui.drawer.IdentityProofsAdapter; import app.fedilab.android.ui.pageadapter.FedilabProfileTLPageAdapter; import app.fedilab.android.viewmodel.mastodon.AccountsVM; Loading Loading @@ -357,43 +357,9 @@ public class ProfileActivity extends BaseActivity { //Fields for profile List<Field> fields = account.fields; if (fields != null && fields.size() > 0) { for (int i = 0; i < fields.size(); i++) { LinearLayout field; TextView labelView; TextView valueView; switch (i) { case 1: field = binding.field1; labelView = binding.label1; valueView = binding.value1; break; case 2: field = binding.field2; labelView = binding.label2; valueView = binding.value2; break; case 3: field = binding.field3; labelView = binding.label3; valueView = binding.value3; break; default: field = binding.field4; labelView = binding.label4; valueView = binding.value4; break; } field.setVisibility(View.VISIBLE); if (fields.get(i).verified_at != null) { valueView.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(ProfileActivity.this, R.drawable.ic_baseline_verified_24), null); fields.get(i).value_span.setSpan(new ForegroundColorSpan(ContextCompat.getColor(ProfileActivity.this, R.color.verified_text)), 0, fields.get(i).value_span.toString().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } valueView.setText(fields.get(i).value_span != null ? fields.get(i).value_span : fields.get(i).value, TextView.BufferType.SPANNABLE); valueView.setMovementMethod(LinkMovementMethod.getInstance()); labelView.setText(fields.get(i).name); } binding.fieldsContainer.setVisibility(View.VISIBLE); FieldAdapter fieldAdapter = new FieldAdapter(fields); binding.fieldsContainer.setAdapter(fieldAdapter); binding.fieldsContainer.setLayoutManager(new LinearLayoutManager(ProfileActivity.this)); } if (account.span_display_name == null && account.display_name == null) { binding.accountDn.setText(account.username); Loading app/src/main/java/app/fedilab/android/helper/Helper.java +11 −20 Original line number Diff line number Diff line Loading @@ -117,7 +117,6 @@ import java.security.Security; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; Loading Loading @@ -1381,7 +1380,6 @@ public class Helper { } private static final List<String> present = new ArrayList<>(); private static int notificationId = 1; /** Loading Loading @@ -1519,10 +1517,7 @@ public class Helper { notificationBuilder.setLargeIcon(icon); Notification summaryNotification = null; if (!present.contains(account.mastodon_account.acct + "@" + account.instance)) { summaryNotification = new NotificationCompat.Builder(context, channelId) Notification summaryNotification = summaryNotification = new NotificationCompat.Builder(context, channelId) .setContentTitle(title) .setContentText(channelTitle) .setContentIntent(pIntent) Loading @@ -1532,14 +1527,10 @@ public class Helper { .setGroup(account.mastodon_account.acct + "@" + account.instance) .setGroupSummary(true) .build(); present.add(account.mastodon_account.acct + "@" + account.instance); } notificationManager.notify(notificationId++, notificationBuilder.build()); if (summaryNotification != null) { notificationManager.notify(0, summaryNotification); } } public static void transfertIfExist(Context context) { File dbFile = context.getDatabasePath(OLD_DB_NAME); Loading app/src/main/java/app/fedilab/android/ui/drawer/FieldAdapter.java 0 → 100644 +85 −0 Original line number Diff line number Diff line package app.fedilab.android.ui.drawer; /* Copyright 2022 Thomas Schneider * * This file is a part of Fedilab * * 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. * * Fedilab 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 Fedilab; if not, * see <http://www.gnu.org/licenses>. */ import android.content.Context; import android.text.Spannable; import android.text.method.LinkMovementMethod; import android.text.style.ForegroundColorSpan; import android.view.LayoutInflater; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; import java.util.List; import app.fedilab.android.R; import app.fedilab.android.client.entities.api.Field; import app.fedilab.android.databinding.DrawerFieldBinding; public class FieldAdapter extends RecyclerView.Adapter<FieldAdapter.FieldViewHolder> { private final List<Field> fields; private Context context; public FieldAdapter(List<Field> fields) { this.fields = fields; } @Override public long getItemId(int position) { return position; } @Override public int getItemCount() { return fields.size(); } @NonNull @Override public FieldViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { context = parent.getContext(); DrawerFieldBinding itemBinding = DrawerFieldBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); return new FieldViewHolder(itemBinding); } @Override public void onBindViewHolder(@NonNull FieldViewHolder holder, int position) { Field field = fields.get(position); if (field.verified_at != null) { holder.binding.value.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(context, R.drawable.ic_baseline_verified_24), null); field.value_span.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.verified_text)), 0, field.value_span.toString().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } holder.binding.value.setText(field.value_span != null ? field.value_span : field.value, TextView.BufferType.SPANNABLE); holder.binding.value.setMovementMethod(LinkMovementMethod.getInstance()); holder.binding.label.setText(field.name); } public static class FieldViewHolder extends RecyclerView.ViewHolder { DrawerFieldBinding binding; FieldViewHolder(DrawerFieldBinding itemView) { super(itemView.getRoot()); binding = itemView; } } } No newline at end of file app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java +12 −2 Original line number Diff line number Diff line Loading @@ -20,9 +20,11 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.service.notification.StatusBarNotification; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; Loading Loading @@ -179,8 +181,16 @@ public class FragmentMastodonNotification extends Fragment implements Notificati @Override public void onResume() { super.onResume(); NotificationManager notificationManager = (NotificationManager) requireActivity().getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.cancel(Helper.NOTIFICATION_USER_NOTIF); NotificationManager mNotificationManager = (NotificationManager) requireActivity().getSystemService(Context.NOTIFICATION_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && BaseMainActivity.currentAccount != null && BaseMainActivity.currentAccount.mastodon_account != null) { for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) { if ((BaseMainActivity.currentAccount.mastodon_account.acct + "@" + BaseMainActivity.currentAccount.instance).equals(statusBarNotification.getGroupKey())) { mNotificationManager.cancel(statusBarNotification.getId()); } } } else { mNotificationManager.cancelAll(); } } Loading app/src/main/res/layout/activity_profile.xml +169 −340 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
app/src/main/java/app/fedilab/android/activities/ProfileActivity.java +4 −38 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.text.Html; import android.text.Spannable; import android.text.SpannableString; import android.text.Spanned; import android.text.method.LinkMovementMethod; Loading Loading @@ -94,6 +93,7 @@ import app.fedilab.android.helper.Helper; import app.fedilab.android.helper.MastodonHelper; import app.fedilab.android.helper.SpannableHelper; import app.fedilab.android.helper.ThemeHelper; import app.fedilab.android.ui.drawer.FieldAdapter; import app.fedilab.android.ui.drawer.IdentityProofsAdapter; import app.fedilab.android.ui.pageadapter.FedilabProfileTLPageAdapter; import app.fedilab.android.viewmodel.mastodon.AccountsVM; Loading Loading @@ -357,43 +357,9 @@ public class ProfileActivity extends BaseActivity { //Fields for profile List<Field> fields = account.fields; if (fields != null && fields.size() > 0) { for (int i = 0; i < fields.size(); i++) { LinearLayout field; TextView labelView; TextView valueView; switch (i) { case 1: field = binding.field1; labelView = binding.label1; valueView = binding.value1; break; case 2: field = binding.field2; labelView = binding.label2; valueView = binding.value2; break; case 3: field = binding.field3; labelView = binding.label3; valueView = binding.value3; break; default: field = binding.field4; labelView = binding.label4; valueView = binding.value4; break; } field.setVisibility(View.VISIBLE); if (fields.get(i).verified_at != null) { valueView.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(ProfileActivity.this, R.drawable.ic_baseline_verified_24), null); fields.get(i).value_span.setSpan(new ForegroundColorSpan(ContextCompat.getColor(ProfileActivity.this, R.color.verified_text)), 0, fields.get(i).value_span.toString().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } valueView.setText(fields.get(i).value_span != null ? fields.get(i).value_span : fields.get(i).value, TextView.BufferType.SPANNABLE); valueView.setMovementMethod(LinkMovementMethod.getInstance()); labelView.setText(fields.get(i).name); } binding.fieldsContainer.setVisibility(View.VISIBLE); FieldAdapter fieldAdapter = new FieldAdapter(fields); binding.fieldsContainer.setAdapter(fieldAdapter); binding.fieldsContainer.setLayoutManager(new LinearLayoutManager(ProfileActivity.this)); } if (account.span_display_name == null && account.display_name == null) { binding.accountDn.setText(account.username); Loading
app/src/main/java/app/fedilab/android/helper/Helper.java +11 −20 Original line number Diff line number Diff line Loading @@ -117,7 +117,6 @@ import java.security.Security; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; Loading Loading @@ -1381,7 +1380,6 @@ public class Helper { } private static final List<String> present = new ArrayList<>(); private static int notificationId = 1; /** Loading Loading @@ -1519,10 +1517,7 @@ public class Helper { notificationBuilder.setLargeIcon(icon); Notification summaryNotification = null; if (!present.contains(account.mastodon_account.acct + "@" + account.instance)) { summaryNotification = new NotificationCompat.Builder(context, channelId) Notification summaryNotification = summaryNotification = new NotificationCompat.Builder(context, channelId) .setContentTitle(title) .setContentText(channelTitle) .setContentIntent(pIntent) Loading @@ -1532,14 +1527,10 @@ public class Helper { .setGroup(account.mastodon_account.acct + "@" + account.instance) .setGroupSummary(true) .build(); present.add(account.mastodon_account.acct + "@" + account.instance); } notificationManager.notify(notificationId++, notificationBuilder.build()); if (summaryNotification != null) { notificationManager.notify(0, summaryNotification); } } public static void transfertIfExist(Context context) { File dbFile = context.getDatabasePath(OLD_DB_NAME); Loading
app/src/main/java/app/fedilab/android/ui/drawer/FieldAdapter.java 0 → 100644 +85 −0 Original line number Diff line number Diff line package app.fedilab.android.ui.drawer; /* Copyright 2022 Thomas Schneider * * This file is a part of Fedilab * * 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. * * Fedilab 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 Fedilab; if not, * see <http://www.gnu.org/licenses>. */ import android.content.Context; import android.text.Spannable; import android.text.method.LinkMovementMethod; import android.text.style.ForegroundColorSpan; import android.view.LayoutInflater; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; import java.util.List; import app.fedilab.android.R; import app.fedilab.android.client.entities.api.Field; import app.fedilab.android.databinding.DrawerFieldBinding; public class FieldAdapter extends RecyclerView.Adapter<FieldAdapter.FieldViewHolder> { private final List<Field> fields; private Context context; public FieldAdapter(List<Field> fields) { this.fields = fields; } @Override public long getItemId(int position) { return position; } @Override public int getItemCount() { return fields.size(); } @NonNull @Override public FieldViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { context = parent.getContext(); DrawerFieldBinding itemBinding = DrawerFieldBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); return new FieldViewHolder(itemBinding); } @Override public void onBindViewHolder(@NonNull FieldViewHolder holder, int position) { Field field = fields.get(position); if (field.verified_at != null) { holder.binding.value.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(context, R.drawable.ic_baseline_verified_24), null); field.value_span.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.verified_text)), 0, field.value_span.toString().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } holder.binding.value.setText(field.value_span != null ? field.value_span : field.value, TextView.BufferType.SPANNABLE); holder.binding.value.setMovementMethod(LinkMovementMethod.getInstance()); holder.binding.label.setText(field.name); } public static class FieldViewHolder extends RecyclerView.ViewHolder { DrawerFieldBinding binding; FieldViewHolder(DrawerFieldBinding itemView) { super(itemView.getRoot()); binding = itemView; } } } No newline at end of file
app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java +12 −2 Original line number Diff line number Diff line Loading @@ -20,9 +20,11 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.service.notification.StatusBarNotification; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; Loading Loading @@ -179,8 +181,16 @@ public class FragmentMastodonNotification extends Fragment implements Notificati @Override public void onResume() { super.onResume(); NotificationManager notificationManager = (NotificationManager) requireActivity().getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.cancel(Helper.NOTIFICATION_USER_NOTIF); NotificationManager mNotificationManager = (NotificationManager) requireActivity().getSystemService(Context.NOTIFICATION_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && BaseMainActivity.currentAccount != null && BaseMainActivity.currentAccount.mastodon_account != null) { for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) { if ((BaseMainActivity.currentAccount.mastodon_account.acct + "@" + BaseMainActivity.currentAccount.instance).equals(statusBarNotification.getGroupKey())) { mNotificationManager.cancel(statusBarNotification.getId()); } } } else { mNotificationManager.cancelAll(); } } Loading
app/src/main/res/layout/activity_profile.xml +169 −340 File changed.Preview size limit exceeded, changes collapsed. Show changes