mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Move manga info summary more/less button toggle
This commit is contained in:
		| @@ -1,7 +1,5 @@ | ||||
| package eu.kanade.tachiyomi.ui.manga.info | ||||
|  | ||||
| import android.content.Context | ||||
| import android.text.TextUtils | ||||
| import android.view.LayoutInflater | ||||
| import android.view.View | ||||
| import android.view.ViewGroup | ||||
| @@ -302,21 +300,23 @@ class MangaInfoHeaderAdapter( | ||||
|                         controller::performSearch | ||||
|                     ) | ||||
|                 } else { | ||||
|                     binding.mangaGenresTagsWrapper.isVisible = false | ||||
|                     binding.mangaGenresTagsCompactChips.isVisible = false | ||||
|                     binding.mangaGenresTagsFullChips.isVisible = false | ||||
|                 } | ||||
|  | ||||
|                 // Handle showing more or less info | ||||
|                 merge( | ||||
|                     binding.mangaSummarySection.clicks(), | ||||
|                     binding.mangaSummaryText.clicks(), | ||||
|                     binding.mangaInfoToggle.clicks() | ||||
|                     binding.mangaInfoToggleMore.clicks(), | ||||
|                     binding.mangaInfoToggleLess.clicks() | ||||
|                 ) | ||||
|                     .onEach { toggleMangaInfo(view.context) } | ||||
|                     .onEach { toggleMangaInfo() } | ||||
|                     .launchIn(scope) | ||||
|  | ||||
|                 // Expand manga info if navigated from source listing | ||||
|                 if (initialLoad && fromSource) { | ||||
|                     toggleMangaInfo(view.context) | ||||
|                     toggleMangaInfo() | ||||
|                     initialLoad = false | ||||
|                 } | ||||
|             } | ||||
| @@ -326,44 +326,21 @@ class MangaInfoHeaderAdapter( | ||||
|             binding.mangaSummarySection.isVisible = visible | ||||
|         } | ||||
|  | ||||
|         private fun toggleMangaInfo(context: Context) { | ||||
|             val isExpanded = | ||||
|                 binding.mangaInfoToggle.contentDescription == context.getString(R.string.manga_info_collapse) | ||||
|         private fun toggleMangaInfo() { | ||||
|             val isCurrentlyExpanded = binding.mangaSummaryText.maxLines != 2 | ||||
|  | ||||
|             with(binding.mangaInfoToggle) { | ||||
|                 contentDescription = if (isExpanded) { | ||||
|                     context.getString(R.string.manga_info_expand) | ||||
|                 } else { | ||||
|                     context.getString(R.string.manga_info_collapse) | ||||
|                 } | ||||
|             binding.mangaInfoToggleMoreScrim.isVisible = isCurrentlyExpanded | ||||
|             binding.mangaInfoToggleMore.isVisible = isCurrentlyExpanded | ||||
|             binding.mangaInfoToggleLess.isVisible = !isCurrentlyExpanded | ||||
|  | ||||
|                 setImageDrawable( | ||||
|                     if (isExpanded) { | ||||
|                         context.getDrawable(R.drawable.ic_baseline_expand_more_24dp) | ||||
|                     } else { | ||||
|                         context.getDrawable(R.drawable.ic_baseline_expand_less_24dp) | ||||
|                     } | ||||
|                 ) | ||||
|             binding.mangaSummaryText.maxLines = if (isCurrentlyExpanded) { | ||||
|                 2 | ||||
|             } else { | ||||
|                 Int.MAX_VALUE | ||||
|             } | ||||
|  | ||||
|             with(binding.mangaSummaryText) { | ||||
|                 maxLines = | ||||
|                     if (isExpanded) { | ||||
|                         2 | ||||
|                     } else { | ||||
|                         Int.MAX_VALUE | ||||
|                     } | ||||
|  | ||||
|                 ellipsize = | ||||
|                     if (isExpanded) { | ||||
|                         TextUtils.TruncateAt.END | ||||
|                     } else { | ||||
|                         null | ||||
|                     } | ||||
|             } | ||||
|  | ||||
|             binding.mangaGenresTagsCompact.isVisible = isExpanded | ||||
|             binding.mangaGenresTagsFullChips.isVisible = !isExpanded | ||||
|             binding.mangaGenresTagsCompact.isVisible = isCurrentlyExpanded | ||||
|             binding.mangaGenresTagsFullChips.isVisible = !isCurrentlyExpanded | ||||
|         } | ||||
|  | ||||
|         /** | ||||
|   | ||||
							
								
								
									
										13
									
								
								app/src/main/res/drawable/manga_info_more_gradient.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								app/src/main/res/drawable/manga_info_more_gradient.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <shape xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:shape="rectangle"> | ||||
|  | ||||
|     <gradient | ||||
|         android:angle="180" | ||||
|         android:centerColor="#ff000000" | ||||
|         android:endColor="#00000000" | ||||
|         android:startColor="#ff000000" /> | ||||
|  | ||||
|     <corners android:radius="0dp" /> | ||||
|  | ||||
| </shape> | ||||
| @@ -38,7 +38,7 @@ | ||||
|             android:paddingStart="16dp" | ||||
|             android:paddingTop="64dp" | ||||
|             android:paddingEnd="16dp" | ||||
|             android:paddingBottom="16dp" | ||||
|             android:paddingBottom="8dp" | ||||
|             app:layout_constraintTop_toTopOf="parent"> | ||||
|  | ||||
|             <eu.kanade.tachiyomi.ui.manga.info.MangaCoverImageView | ||||
| @@ -178,34 +178,12 @@ | ||||
|  | ||||
|     </androidx.constraintlayout.widget.ConstraintLayout> | ||||
|  | ||||
|     <LinearLayout | ||||
|     <androidx.constraintlayout.widget.ConstraintLayout | ||||
|         android:id="@+id/manga_summary_section" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_marginTop="8dp" | ||||
|         android:background="?attr/selectableItemBackground" | ||||
|         android:orientation="vertical"> | ||||
|  | ||||
|         <androidx.constraintlayout.widget.ConstraintLayout | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:paddingStart="16dp" | ||||
|             android:paddingEnd="16dp"> | ||||
|  | ||||
|             <ImageButton | ||||
|                 android:id="@+id/manga_info_toggle" | ||||
|                 android:layout_width="32dp" | ||||
|                 android:layout_height="32dp" | ||||
|                 android:layout_alignParentEnd="true" | ||||
|                 android:background="?selectableItemBackgroundBorderless" | ||||
|                 android:contentDescription="@string/manga_info_expand" | ||||
|                 app:layout_constraintBottom_toBottomOf="parent" | ||||
|                 app:layout_constraintEnd_toEndOf="parent" | ||||
|                 app:layout_constraintTop_toTopOf="parent" | ||||
|                 app:srcCompat="@drawable/ic_baseline_expand_more_24dp" | ||||
|                 app:tint="?attr/colorOnPrimary" /> | ||||
|  | ||||
|         </androidx.constraintlayout.widget.ConstraintLayout> | ||||
|         android:background="?attr/selectableItemBackground"> | ||||
|  | ||||
|         <TextView | ||||
|             android:id="@+id/manga_summary_text" | ||||
| @@ -215,49 +193,85 @@ | ||||
|             android:layout_marginStart="16dp" | ||||
|             android:layout_marginEnd="16dp" | ||||
|             android:clickable="true" | ||||
|             android:ellipsize="end" | ||||
|             android:focusable="true" | ||||
|             android:maxLines="2" | ||||
|             android:textIsSelectable="false" | ||||
|             tools:text="Summary" /> | ||||
|             app:layout_constraintEnd_toEndOf="parent" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintTop_toTopOf="parent" | ||||
|             tools:text="Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content" /> | ||||
|  | ||||
|         <FrameLayout | ||||
|             android:id="@+id/manga_genres_tags_wrapper" | ||||
|         <View | ||||
|             android:id="@+id/manga_info_toggle_more_scrim" | ||||
|             android:layout_width="20dp" | ||||
|             android:layout_height="0dp" | ||||
|             android:background="@drawable/manga_info_more_gradient" | ||||
|             android:backgroundTint="?android:attr/colorBackground" | ||||
|             app:layout_constraintBottom_toBottomOf="@+id/manga_summary_text" | ||||
|             app:layout_constraintEnd_toStartOf="@id/manga_info_toggle_more" | ||||
|             app:layout_constraintTop_toTopOf="@+id/manga_info_toggle_more" /> | ||||
|  | ||||
|         <com.google.android.material.button.MaterialButton | ||||
|             android:id="@+id/manga_info_toggle_more" | ||||
|             style="@style/Theme.Widget.Button.TextButton" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:paddingStart="8dp" | ||||
|             android:paddingEnd="16dp" | ||||
|             android:text="@string/manga_info_expand" | ||||
|             android:textAlignment="viewEnd" | ||||
|             app:layout_constraintBottom_toBottomOf="@+id/manga_summary_text" | ||||
|             app:layout_constraintEnd_toEndOf="parent" /> | ||||
|  | ||||
|         <com.google.android.material.button.MaterialButton | ||||
|             android:id="@+id/manga_info_toggle_less" | ||||
|             style="@style/Theme.Widget.Button.TextButton" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:paddingStart="8dp" | ||||
|             android:paddingEnd="16dp" | ||||
|             android:text="@string/manga_info_collapse" | ||||
|             android:textAlignment="viewEnd" | ||||
|             android:visibility="gone" | ||||
|             app:layout_constraintEnd_toEndOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/manga_summary_text" /> | ||||
|  | ||||
|         <HorizontalScrollView | ||||
|             android:id="@+id/manga_genres_tags_compact" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content"> | ||||
|             android:layout_height="wrap_content" | ||||
|             android:requiresFadingEdge="horizontal" | ||||
|             app:layout_constraintEnd_toEndOf="parent" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/manga_summary_text"> | ||||
|  | ||||
|             <com.google.android.material.chip.ChipGroup | ||||
|                 android:id="@+id/manga_genres_tags_full_chips" | ||||
|                 android:layout_width="match_parent" | ||||
|                 android:id="@+id/manga_genres_tags_compact_chips" | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_marginStart="16dp" | ||||
|                 android:layout_marginEnd="16dp" | ||||
|                 android:paddingStart="16dp" | ||||
|                 android:paddingTop="8dp" | ||||
|                 android:paddingEnd="16dp" | ||||
|                 android:paddingBottom="8dp" | ||||
|                 android:visibility="gone" | ||||
|                 app:chipSpacingHorizontal="4dp" /> | ||||
|                 app:chipSpacingHorizontal="4dp" | ||||
|                 app:singleLine="true" /> | ||||
|  | ||||
|             <HorizontalScrollView | ||||
|                 android:id="@+id/manga_genres_tags_compact" | ||||
|                 android:layout_width="match_parent" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:requiresFadingEdge="horizontal"> | ||||
|         </HorizontalScrollView> | ||||
|  | ||||
|                 <com.google.android.material.chip.ChipGroup | ||||
|                     android:id="@+id/manga_genres_tags_compact_chips" | ||||
|                     android:layout_width="wrap_content" | ||||
|                     android:layout_height="wrap_content" | ||||
|                     android:paddingStart="16dp" | ||||
|                     android:paddingTop="8dp" | ||||
|                     android:paddingEnd="16dp" | ||||
|                     android:paddingBottom="8dp" | ||||
|                     app:chipSpacingHorizontal="4dp" | ||||
|                     app:singleLine="true" /> | ||||
|         <com.google.android.material.chip.ChipGroup | ||||
|             android:id="@+id/manga_genres_tags_full_chips" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_marginStart="16dp" | ||||
|             android:layout_marginEnd="16dp" | ||||
|             android:paddingTop="8dp" | ||||
|             android:paddingBottom="8dp" | ||||
|             android:visibility="gone" | ||||
|             app:chipSpacingHorizontal="4dp" | ||||
|             app:layout_constraintEnd_toEndOf="parent" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/manga_info_toggle_less" /> | ||||
|  | ||||
|             </HorizontalScrollView> | ||||
|  | ||||
|         </FrameLayout> | ||||
|  | ||||
|     </LinearLayout> | ||||
|     </androidx.constraintlayout.widget.ConstraintLayout> | ||||
|  | ||||
| </LinearLayout> | ||||
|   | ||||
| @@ -265,6 +265,23 @@ | ||||
|         <item name="backgroundTint">@color/outlined_button_bg</item> | ||||
|     </style> | ||||
|  | ||||
|     <style name="Theme.Widget.Button.TextButton" parent="Widget.MaterialComponents.Button.TextButton"> | ||||
|         <item name="android:letterSpacing">0.0</item> | ||||
|         <item name="android:textColor">?attr/colorAccent</item> | ||||
|         <item name="android:textAllCaps">false</item> | ||||
|  | ||||
|         <item name="android:minHeight">0dp</item> | ||||
|         <item name="android:minWidth">0dp</item> | ||||
|         <item name="android:paddingTop">0dp</item> | ||||
|         <item name="android:paddingBottom">0dp</item> | ||||
|         <item name="android:insetTop">0dp</item> | ||||
|         <item name="android:insetBottom">0dp</item> | ||||
|  | ||||
|         <item name="android:background">?android:attr/colorBackground</item> | ||||
|         <item name="backgroundTint">@null</item> | ||||
|         <item name="rippleColor">@null</item> | ||||
|     </style> | ||||
|  | ||||
|  | ||||
|     <!--=================--> | ||||
|     <!--Widgets.TabLayout--> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user