Loading app/src/main/java/app/fedilab/android/peertube/drawer/InstanceAdapter.java +7 −15 Original line number Diff line number Diff line Loading @@ -22,13 +22,12 @@ import android.content.Context; import android.os.Build; import android.text.Html; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.google.android.material.chip.Chip; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; Loading @@ -39,7 +38,6 @@ import java.util.List; import app.fedilab.android.R; import app.fedilab.android.databinding.DrawerInstancePeertubeBinding; import app.fedilab.android.peertube.client.data.InstanceData.Instance; import app.fedilab.android.peertube.helper.RoundedBackgroundSpan; public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { Loading Loading @@ -95,27 +93,21 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde holder.binding.name.setText(instance.getName()); holder.binding.host.setText(instance.getHost()); SpannableStringBuilder stringBuilder = new SpannableStringBuilder(); String between = ""; holder.binding.chips.removeAllViews(); if (peertubeInformation != null && peertubeInformation.getCategories() != null) { LinkedHashMap<Integer, String> info_cat = new LinkedHashMap<>(peertubeInformation.getCategories()); if (instance.getCategories() != null && instance.getCategories().size() > 0 && instance.getSpannableStringBuilder() == null) { for (int category : instance.getCategories()) { String cat = info_cat.get(category); stringBuilder.append(between); if (cat != null && cat.trim().toLowerCase().compareTo("null") != 0) { if (between.length() == 0) between = " "; String tag = " " + cat + " "; stringBuilder.append(tag); stringBuilder.setSpan(new RoundedBackgroundSpan(context), stringBuilder.length() - tag.length(), stringBuilder.length() - tag.length() + tag.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); } Chip chip = new Chip(context); chip.setClickable(false); chip.setEnsureMinTouchTargetSize(false); chip.setText(cat); holder.binding.chips.addView(chip); } instance.setSpannableStringBuilder(stringBuilder); } } if (instance.getSpannableStringBuilder() != null) { holder.binding.tags.setText(instance.getSpannableStringBuilder()); } if (peertubeInformation != null && peertubeInformation.getLanguages() != null) { Loading app/src/main/res/layouts/peertube/layout/drawer_instance_peertube.xml +65 −48 Original line number Diff line number Diff line Loading @@ -14,91 +14,108 @@ You should have received a copy of the GNU General Public License along with Fedilab; if not, see <http://www.gnu.org/licenses>. --> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android" <com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main_container" style="@style/Widget.Material3.CardView.Outlined" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:divider="?android:dividerHorizontal" android:gravity="bottom" android:orientation="vertical" android:showDividers="end"> android:layout_marginVertical="6dp"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content"> android:layout_height="wrap_content" android:layout_margin="12dp" android:orientation="vertical"> <androidx.appcompat.widget.AppCompatTextView <com.google.android.material.textview.MaterialTextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_width="0dp" android:layout_height="wrap_content" android:textSize="16sp" android:textStyle="bold" android:textAppearance="@style/TextAppearance.Material3.BodyLarge" app:layout_constraintBottom_toTopOf="@id/host" app:layout_constraintEnd_toStartOf="@id/pickup" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" tools:text="@tools:sample/cities" /> <androidx.appcompat.widget.AppCompatTextView <com.google.android.material.textview.MaterialTextView android:id="@+id/host" android:layout_width="0dp" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.Material3.BodySmall" app:layout_constraintBottom_toTopOf="@id/barrier_1" app:layout_constraintEnd_toStartOf="@id/pickup" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/name" tools:text="@tools:sample/cities" /> <com.google.android.material.button.MaterialButton android:id="@+id/pickup" style="@style/Widget.Material3.Button.TextButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" app:layout_constraintStart_toEndOf="@+id/name" android:text="@string/pickup_instance" app:icon="@drawable/ic_navigate_next" app:iconGravity="end" app:layout_constraintBottom_toTopOf="@id/barrier_1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> <androidx.appcompat.widget.AppCompatTextView <androidx.constraintlayout.widget.Barrier android:id="@+id/barrier_1" android:layout_width="match_parent" android:layout_height="wrap_content" app:barrierDirection="bottom" app:constraint_referenced_ids="host,pickup" /> <com.google.android.material.textview.MaterialTextView android:id="@+id/description" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/name" /> android:layout_marginTop="12dp" android:textAppearance="@style/TextAppearance.Material3.BodyMedium" app:layout_constraintTop_toBottomOf="@id/barrier_1" tools:maxLines="4" tools:text="@tools:sample/lorem/random" /> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/tags" <com.google.android.material.chip.ChipGroup android:id="@+id/chips" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/description" /> android:layout_marginTop="12dp" app:chipSpacingHorizontal="6dp" app:chipSpacingVertical="6dp" app:layout_constraintTop_toBottomOf="@id/description"> </com.google.android.material.chip.ChipGroup> <androidx.appcompat.widget.AppCompatTextView <com.google.android.material.textview.MaterialTextView android:id="@+id/followers_instance" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:drawablePadding="10dp" android:layout_marginTop="12dp" android:drawablePadding="12dp" app:drawableStartCompat="@drawable/ic_baseline_group_24" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tags" /> app:layout_constraintTop_toBottomOf="@id/chips" /> <androidx.appcompat.widget.AppCompatTextView <com.google.android.material.textview.MaterialTextView android:id="@+id/languages" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:drawablePadding="10dp" android:layout_marginTop="6dp" android:drawablePadding="12dp" app:drawableStartCompat="@drawable/ic_baseline_forum_24" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/followers_instance" /> app:layout_constraintTop_toBottomOf="@id/followers_instance" /> <androidx.appcompat.widget.AppCompatTextView <com.google.android.material.textview.MaterialTextView android:id="@+id/sensitive_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/languages" /> android:layout_marginTop="6dp" app:layout_constraintTop_toBottomOf="@id/languages" /> <com.google.android.material.button.MaterialButton android:id="@+id/pickup" style="@style/Widget.Material3.Button.ElevatedButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:text="@string/pickup_instance" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/sensitive_content" /> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.appcompat.widget.LinearLayoutCompat> No newline at end of file </com.google.android.material.card.MaterialCardView> No newline at end of file Loading
app/src/main/java/app/fedilab/android/peertube/drawer/InstanceAdapter.java +7 −15 Original line number Diff line number Diff line Loading @@ -22,13 +22,12 @@ import android.content.Context; import android.os.Build; import android.text.Html; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.google.android.material.chip.Chip; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; Loading @@ -39,7 +38,6 @@ import java.util.List; import app.fedilab.android.R; import app.fedilab.android.databinding.DrawerInstancePeertubeBinding; import app.fedilab.android.peertube.client.data.InstanceData.Instance; import app.fedilab.android.peertube.helper.RoundedBackgroundSpan; public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { Loading Loading @@ -95,27 +93,21 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde holder.binding.name.setText(instance.getName()); holder.binding.host.setText(instance.getHost()); SpannableStringBuilder stringBuilder = new SpannableStringBuilder(); String between = ""; holder.binding.chips.removeAllViews(); if (peertubeInformation != null && peertubeInformation.getCategories() != null) { LinkedHashMap<Integer, String> info_cat = new LinkedHashMap<>(peertubeInformation.getCategories()); if (instance.getCategories() != null && instance.getCategories().size() > 0 && instance.getSpannableStringBuilder() == null) { for (int category : instance.getCategories()) { String cat = info_cat.get(category); stringBuilder.append(between); if (cat != null && cat.trim().toLowerCase().compareTo("null") != 0) { if (between.length() == 0) between = " "; String tag = " " + cat + " "; stringBuilder.append(tag); stringBuilder.setSpan(new RoundedBackgroundSpan(context), stringBuilder.length() - tag.length(), stringBuilder.length() - tag.length() + tag.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); } Chip chip = new Chip(context); chip.setClickable(false); chip.setEnsureMinTouchTargetSize(false); chip.setText(cat); holder.binding.chips.addView(chip); } instance.setSpannableStringBuilder(stringBuilder); } } if (instance.getSpannableStringBuilder() != null) { holder.binding.tags.setText(instance.getSpannableStringBuilder()); } if (peertubeInformation != null && peertubeInformation.getLanguages() != null) { Loading
app/src/main/res/layouts/peertube/layout/drawer_instance_peertube.xml +65 −48 Original line number Diff line number Diff line Loading @@ -14,91 +14,108 @@ You should have received a copy of the GNU General Public License along with Fedilab; if not, see <http://www.gnu.org/licenses>. --> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android" <com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main_container" style="@style/Widget.Material3.CardView.Outlined" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:divider="?android:dividerHorizontal" android:gravity="bottom" android:orientation="vertical" android:showDividers="end"> android:layout_marginVertical="6dp"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content"> android:layout_height="wrap_content" android:layout_margin="12dp" android:orientation="vertical"> <androidx.appcompat.widget.AppCompatTextView <com.google.android.material.textview.MaterialTextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_width="0dp" android:layout_height="wrap_content" android:textSize="16sp" android:textStyle="bold" android:textAppearance="@style/TextAppearance.Material3.BodyLarge" app:layout_constraintBottom_toTopOf="@id/host" app:layout_constraintEnd_toStartOf="@id/pickup" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" tools:text="@tools:sample/cities" /> <androidx.appcompat.widget.AppCompatTextView <com.google.android.material.textview.MaterialTextView android:id="@+id/host" android:layout_width="0dp" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.Material3.BodySmall" app:layout_constraintBottom_toTopOf="@id/barrier_1" app:layout_constraintEnd_toStartOf="@id/pickup" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/name" tools:text="@tools:sample/cities" /> <com.google.android.material.button.MaterialButton android:id="@+id/pickup" style="@style/Widget.Material3.Button.TextButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" app:layout_constraintStart_toEndOf="@+id/name" android:text="@string/pickup_instance" app:icon="@drawable/ic_navigate_next" app:iconGravity="end" app:layout_constraintBottom_toTopOf="@id/barrier_1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> <androidx.appcompat.widget.AppCompatTextView <androidx.constraintlayout.widget.Barrier android:id="@+id/barrier_1" android:layout_width="match_parent" android:layout_height="wrap_content" app:barrierDirection="bottom" app:constraint_referenced_ids="host,pickup" /> <com.google.android.material.textview.MaterialTextView android:id="@+id/description" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/name" /> android:layout_marginTop="12dp" android:textAppearance="@style/TextAppearance.Material3.BodyMedium" app:layout_constraintTop_toBottomOf="@id/barrier_1" tools:maxLines="4" tools:text="@tools:sample/lorem/random" /> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/tags" <com.google.android.material.chip.ChipGroup android:id="@+id/chips" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/description" /> android:layout_marginTop="12dp" app:chipSpacingHorizontal="6dp" app:chipSpacingVertical="6dp" app:layout_constraintTop_toBottomOf="@id/description"> </com.google.android.material.chip.ChipGroup> <androidx.appcompat.widget.AppCompatTextView <com.google.android.material.textview.MaterialTextView android:id="@+id/followers_instance" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:drawablePadding="10dp" android:layout_marginTop="12dp" android:drawablePadding="12dp" app:drawableStartCompat="@drawable/ic_baseline_group_24" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tags" /> app:layout_constraintTop_toBottomOf="@id/chips" /> <androidx.appcompat.widget.AppCompatTextView <com.google.android.material.textview.MaterialTextView android:id="@+id/languages" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:drawablePadding="10dp" android:layout_marginTop="6dp" android:drawablePadding="12dp" app:drawableStartCompat="@drawable/ic_baseline_forum_24" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/followers_instance" /> app:layout_constraintTop_toBottomOf="@id/followers_instance" /> <androidx.appcompat.widget.AppCompatTextView <com.google.android.material.textview.MaterialTextView android:id="@+id/sensitive_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/languages" /> android:layout_marginTop="6dp" app:layout_constraintTop_toBottomOf="@id/languages" /> <com.google.android.material.button.MaterialButton android:id="@+id/pickup" style="@style/Widget.Material3.Button.ElevatedButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:text="@string/pickup_instance" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/sensitive_content" /> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.appcompat.widget.LinearLayoutCompat> No newline at end of file </com.google.android.material.card.MaterialCardView> No newline at end of file