Simple layout for unselectable folders

pull/157/head
M66B 6 years ago
parent 88b5146245
commit b815d622fe

@ -158,7 +158,6 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
} }
private void bindTo(final TupleFolderEx folder) { private void bindTo(final TupleFolderEx folder) {
view.setEnabled(folder.selectable);
view.setActivated(folder.tbc != null || folder.tbd != null); view.setActivated(folder.tbc != null || folder.tbd != null);
view.setAlpha(folder.hide || !folder.selectable || disabledIds.contains(folder.id) view.setAlpha(folder.hide || !folder.selectable || disabledIds.contains(folder.id)
? Helper.LOW_LIGHT : 1.0f); ? Helper.LOW_LIGHT : 1.0f);
@ -197,7 +196,8 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
folder.synchronize || folder.state != null || folder.sync_state != null folder.synchronize || folder.state != null || folder.sync_state != null
? View.VISIBLE : View.INVISIBLE); ? View.VISIBLE : View.INVISIBLE);
ivReadOnly.setVisibility(folder.read_only ? View.VISIBLE : View.GONE); if (folder.selectable)
ivReadOnly.setVisibility(folder.read_only ? View.VISIBLE : View.GONE);
} }
ViewGroup.LayoutParams lp = vwLevel.getLayoutParams(); ViewGroup.LayoutParams lp = vwLevel.getLayoutParams();
@ -210,7 +210,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
: folder.child_refs != null && folder.child_refs.size() > 0 : folder.child_refs != null && folder.child_refs.size() > 0
? View.VISIBLE : View.INVISIBLE); ? View.VISIBLE : View.INVISIBLE);
if (listener == null) { if (listener == null && folder.selectable) {
ivUnified.setVisibility(account > 0 && folder.unified ? View.VISIBLE : View.GONE); ivUnified.setVisibility(account > 0 && folder.unified ? View.VISIBLE : View.GONE);
ivSubscribed.setVisibility(subscriptions && folder.subscribed != null && folder.subscribed ? View.VISIBLE : View.GONE); ivSubscribed.setVisibility(subscriptions && folder.subscribed != null && folder.subscribed ? View.VISIBLE : View.GONE);
ivRule.setVisibility(folder.rules > 0 ? View.VISIBLE : View.GONE); ivRule.setVisibility(folder.rules > 0 ? View.VISIBLE : View.GONE);
@ -227,7 +227,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
tvName.setTypeface(folder.unseen > 0 ? Typeface.DEFAULT_BOLD : Typeface.DEFAULT); tvName.setTypeface(folder.unseen > 0 ? Typeface.DEFAULT_BOLD : Typeface.DEFAULT);
tvName.setTextColor(folder.unseen > 0 ? colorUnread : textColorSecondary); tvName.setTextColor(folder.unseen > 0 ? colorUnread : textColorSecondary);
if (listener == null) { if (listener == null && folder.selectable) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if (folder.account == null) if (folder.account == null)
sb.append(nf.format(folder.messages)); sb.append(nf.format(folder.messages));
@ -242,9 +242,10 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
? R.drawable.baseline_mail_24 : R.drawable.baseline_mail_outline_24); ? R.drawable.baseline_mail_24 : R.drawable.baseline_mail_outline_24);
} }
ivType.setImageResource(EntityFolder.getIcon(folder.type)); if (folder.selectable)
ivType.setImageResource(EntityFolder.getIcon(folder.type));
if (listener == null) { if (listener == null && folder.selectable) {
if (account < 0) if (account < 0)
tvType.setText(folder.accountName); tvType.setText(folder.accountName);
else { else {
@ -813,12 +814,18 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
return items.size(); return items.size();
} }
@Override
public int getItemViewType(int position) {
if (listener == null) {
return (items.get(position).selectable ? R.layout.item_folder : R.layout.item_folder_unselectable);
} else
return R.layout.item_folder_select;
}
@Override @Override
@NonNull @NonNull
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(inflater.inflate( return new ViewHolder(inflater.inflate(viewType, parent, false));
listener == null ? R.layout.item_folder : R.layout.item_folder_select,
parent, false));
} }
@Override @Override

@ -22,24 +22,24 @@
<ImageView <ImageView
android:id="@+id/ivExpander" android:id="@+id/ivExpander"
android:layout_width="36dp" android:layout_width="36dp"
android:layout_height="wrap_content" android:layout_height="0dp"
android:layout_gravity="center_vertical|center_horizontal" android:layout_gravity="center_vertical|center_horizontal"
android:contentDescription="@string/title_legend_expander" android:contentDescription="@string/title_legend_expander"
android:padding="6dp" android:padding="6dp"
app:srcCompat="@drawable/expander" app:layout_constraintDimensionRatio="1:1"
app:layout_constraintBottom_toBottomOf="@+id/tvName"
app:layout_constraintStart_toEndOf="@+id/vwLevel" app:layout_constraintStart_toEndOf="@+id/vwLevel"
app:layout_constraintTop_toTopOf="@+id/tvName" /> app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/expander" />
<ImageView <ImageView
android:id="@+id/ivType" android:id="@+id/ivType"
android:layout_width="24dp" android:layout_width="24dp"
android:layout_height="24dp" android:layout_height="24dp"
android:contentDescription="@string/title_legend_folder_type" android:contentDescription="@string/title_legend_folder_type"
app:srcCompat="@drawable/baseline_inbox_24" app:layout_constraintBottom_toBottomOf="@id/ivExpander"
app:layout_constraintBottom_toBottomOf="@+id/tvName" app:layout_constraintStart_toEndOf="@id/ivExpander"
app:layout_constraintStart_toEndOf="@+id/ivExpander" app:layout_constraintTop_toTopOf="@id/ivExpander"
app:layout_constraintTop_toTopOf="@+id/tvName" /> app:srcCompat="@drawable/baseline_inbox_24" />
<TextView <TextView
android:id="@+id/tvName" android:id="@+id/tvName"
@ -52,8 +52,9 @@
android:singleLine="true" android:singleLine="true"
android:text="Name" android:text="Name"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textAppearance="@style/TextAppearance.AppCompat.Medium"
app:layout_constraintBottom_toBottomOf="@id/ivExpander"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/ivType" app:layout_constraintStart_toEndOf="@id/ivType"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="@id/ivExpander" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout> </FrameLayout>

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clItem"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:id="@+id/vwColor"
android:layout_width="6dp"
android:layout_height="0dp"
android:background="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="@+id/paddingBottom"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivState"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="6dp"
android:contentDescription="@string/title_legend_connection_state"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@+id/tvName"
app:layout_constraintStart_toEndOf="@id/vwColor"
app:layout_constraintTop_toTopOf="@+id/tvName"
app:srcCompat="@drawable/baseline_cloud_off_24" />
<View
android:id="@+id/vwLevel"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="@+id/tvKeywords"
app:layout_constraintStart_toEndOf="@id/ivState"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivExpander"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center_vertical|center_horizontal"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/title_legend_expander"
android:paddingStart="12dp"
android:paddingEnd="12dp"
app:layout_constraintBottom_toBottomOf="@+id/paddingBottom"
app:layout_constraintStart_toEndOf="@+id/vwLevel"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/expander" />
<TextView
android:id="@+id/tvName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:layout_marginEnd="6dp"
android:ellipsize="end"
android:gravity="center_vertical"
android:minHeight="24dp"
android:singleLine="true"
android:text="Name"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/ivExpander"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/paddingBottom"
android:layout_width="match_parent"
android:layout_height="6dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvName" />
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
Loading…
Cancel
Save